Serverless DynamoDB LocalとServerless Framework:Serverless Frameworkを使ったDynamoDB Localの設定方法

Serverless DynamoDB LocalとServerless Framework:Serverless Frameworkを使ったDynamoDB Localの設定方法

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちは!

AWSのサーバーレス開発を行う際に、ローカルでDynamoDBをエミュレートしたいケースが多々あります。この記事では、ローカルでDynamoDBのエミュレートを可能にするServerless FrameworkのDynamoDB Localを設定する方法をご紹介します。

Serverless Frameworkを使ったDynamoDB Localの設定

Serverless Frameworkを使用してDynamoDB Localを設定するには、以下の手順を実行します。

1. Serverless Frameworkをインストールする

まず、Serverless Frameworkをインストールします。

※ 事前にNode.jsをインストールしておく必要があります

npm install --save-dev serverless

2. Serverless Frameworkプロジェクトを作成する

次に、Serverless Frameworkプロジェクトを作成します。Serverless Frameworkプロジェクトを作成するには、以下のコマンドを実行します。

npx sls create --template aws-nodejs --path my-project

3. DynamoDB Localを設定する

次に、DynamoDB Localを設定します。

npm install --save-dev serverless-dynamodb-local
// serverless.yml
service: my-service

provider:
  name: aws
  runtime: nodejs16.x

functions:
  hello:
    handler: handler.hello

resources:
  Resources:
    DynamoDBTable:
      Type: AWS::DynamoDB::Table
      Properties:
        TableName: my-table
        AttributeDefinitions:
          - AttributeName: id
            AttributeType: S
        KeySchema:
          - AttributeName: id
            KeyType: HASH

plugins:
  - serverless-dynamodb-local

custom:
  dynamodb:
    start:
      port: 8000

4. DynamoDBローカルのインストールと起動

プロジェクトへDynamoDBローカルをインストールします。プロジェクトのルートに.dynamodbフォルダーが生成されます。

npx sls dynamodb install

以下のコマンドで起動します。

npx sls dynamodb start

5. ローカルのDynamoDBテーブルへアイテムを挿入

以下のLambda関数のコードをローカルで実行すると、ローカルのDynamoDBへアイテムがPutされます。

// handler.ts
import { DynamoDB } from 'aws-sdk';

const dynamo = new DynamoDB.DocumentClient({
  region: 'ap-northeast-1',
  endpoint: '<http://localhost:8000>',
});

export const hello = async (event: any, context: any) => {
  const params = {
    TableName: 'my-table',
    Item: {
      id: '1',
      name: 'John Doe',
      age: 30,
    },
  };

  await dynamo.put(params).promise();

  return {
    statusCode: 200,
    body: JSON.stringify({
      message: 'Hello World!',
    }),
  };
};

まとめ

この記事では、Serverless Frameworkを使用してDynamoDB Localを設定する方法をご紹介しました。Serverless Frameworkを使用することで、ローカルにDynamoDBを設定することができます。

サーバーレス開発低コストなAWS開発内製化はお気軽にお問い合わせください。