目次

    本記事では、AWS Lambda関数でToDoの作成、取得、更新、削除を実装し、API GatewayでREST APIとして公開する手順を紹介します。DynamoDBをデータベースとして利用し、Node.jsで書いたコード例を交えて、実際に動作するサーバーレスCRUDアプリを完成させます。

    例:Lambda関数(Node.js)によるCRUD操作

    • ToDo作成 (Create)

    const AWS = require('aws-sdk');
    const { v4: uuidv4 } = require('uuid');
    const dynamo = new AWS.DynamoDB.DocumentClient();
    
    exports.handler = async (event) => {
      const body = JSON.parse(event.body);
      const id = uuidv4();
    
      const params = {
        TableName: 'ToDo',
        Item: {
          id: id,
          title: body.title,
          completed: false,
        },
      };
    
      await dynamo.put(params).promise();
    
      return {
        statusCode: 201,
        body: JSON.stringify({ message: 'ToDo created', id }),
      };
    };
    
    • ToDo取得 (Read)

    const AWS = require('aws-sdk');
    const dynamo = new AWS.DynamoDB.DocumentClient();
    
    exports.handler = async () => {
      const params = { TableName: 'ToDo' };
      const data = await dynamo.scan(params).promise();
    
      return {
        statusCode: 200,
        body: JSON.stringify(data.Items),
      };
    };
    
    • ToDo更新 (Update)

    const AWS = require('aws-sdk');
    const dynamo = new AWS.DynamoDB.DocumentClient();
    
    exports.handler = async (event) => {
      const id = event.pathParameters.id;
      const body = JSON.parse(event.body);
    
      const params = {
        TableName: 'ToDo',
        Key: { id },
        UpdateExpression: 'set title = :t, completed = :c',
        ExpressionAttributeValues: {
          ':t': body.title,
          ':c': body.completed,
        },
        ReturnValues: 'UPDATED_NEW',
      };
    
      const result = await dynamo.update(params).promise();
    
      return {
        statusCode: 200,
        body: JSON.stringify(result.Attributes),
      };
    };
    
    • ToDo削除 (Delete)

    const AWS = require('aws-sdk');
    const dynamo = new AWS.DynamoDB.DocumentClient();
    
    exports.handler = async (event) => {
      const id = event.pathParameters.id;
    
      const params = {
        TableName: 'ToDo',
        Key: { id },
      };
    
      await dynamo.delete(params).promise();
    
      return {
        statusCode: 200,
        body: JSON.stringify({ message: 'Deleted' }),
      };
    };
    

    API GatewayにてこれらのLambda関数をHTTPメソッドとパスに紐付ければ、サーバーレスなToDo CRUD APIが完成します。


    PREV
    2025.07.15
    GDPRとそれ以降:欧州における日本ブランドのデータプライバシーコンプライアンス
    NEXT
    2025.08.07
    つまるところ、文字詰めの話〜Webでのやり方編〜