こんにちは!
AWSのサーバーレス開発を行う際に、ローカルでDynamoDBをエミュレートしたいケースが多々あります。この記事では、ローカルでDynamoDBのエミュレートを可能にするServerless FrameworkのDynamoDB Localを設定する方法をご紹介します。
Serverless Frameworkを使用してDynamoDB Localを設定するには、以下の手順を実行します。
まず、Serverless Frameworkをインストールします。
※ 事前にNode.jsをインストールしておく必要があります
npm install --save-dev serverless
次に、Serverless Frameworkプロジェクトを作成します。Serverless Frameworkプロジェクトを作成するには、以下のコマンドを実行します。
npx sls create --template aws-nodejs --path my-project
次に、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
プロジェクトへDynamoDBローカルをインストールします。プロジェクトのルートに.dynamodbフォルダーが生成されます。
npx sls dynamodb install
以下のコマンドで起動します。
npx sls dynamodb start
以下の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開発内製化はお気軽にお問い合わせください。
スモールスタート開発支援、サーバーレス・NoSQLのことなら
ラーゲイトまでご相談ください
低コスト、サーバーレスの
モダナイズ開発をご検討なら
下請け対応可能
Sler企業様からの依頼も歓迎