AWS+NodeJS로 서버리스 환경 구축 ④

소개



이번은 지난번의 계속으로, DELETE(대상 유저의 삭제), GET(모든 유저의 취득) PATCH(대상 유저의 갱신)를 만들어 갑니다.

DELETE (대상 사용자 삭제)



지정된 id를 바탕으로 대상 사용자가 삭제되도록 합니다.

Lambda 함수 작성 및 설정





출처

index.js
'use strict';
const AWS = require('aws-sdk');
const myRegion = "us-east-2";

AWS.config.update({ region: myRegion});

exports.handler = async (event, context) => {
  const documentClient = new AWS.DynamoDB.DocumentClient({ region: myRegion});

  let responseBody = "";
  let statusCode = 0;

  const { id } = event.pathParameters;

  const params = {
    TableName: "Users",
    Key: {
      id: id
    }
  };

  try {
    const data = await documentClient.delete(params).promise();
    responseBody = JSON.stringify(data);
    statusCode = 204;
  } catch (err) {
    responseBody = `Unable to delete user: ${err}`;
    statusCode = 403;
  }

  const response = {
    statusCode: statusCode,
    headers: {
      "Content-Type": "application/json"
    },
    body: responseBody
  };

  return response;
};

메소드 작성 및 설정






테스트 실행 및 확인



테스트 버튼

삭제되었는지 확인


GET (모든 사용자 획득)



GET 메소드를 실행했을 때, 모든 유저가 취득되도록(듯이) 한다.

Lambda 함수 작성 및 설정




출처

index.js
'use strict';
const AWS = require('aws-sdk');
const myRegion = "us-east-2";

AWS.config.update({ region: myRegion});

exports.handler = async (event, context) => {
  const documentClient = new AWS.DynamoDB.DocumentClient({ region: myRegion});

  let responseBody = "";
  let statusCode = 0;

  const params = {
    TableName: "Users"
  };

  try {
    const data = await documentClient.scan(params).promise();
    responseBody = JSON.stringify(data);
    statusCode = 200;
  } catch (err) {
    responseBody = `Unable to get users: ${err}`;
    statusCode = 403;
  }

  const response = {
    statusCode: statusCode,
    headers: {
      "Content-Type": "application/json"
    },
    body: responseBody
  };

  return response;
};

메소드 작성 및 설정






테스트 실행 및 확인



아무 것도 입력하지 않고 테스트 버튼.


PATCH (대상 사용자 업데이트)



PATCH 메소드를 실행했을 때, 대상의 유저가 갱신되도록(듯이) 한다.

Lambda 함수 작성 및 설정




출처

index.js
/**
 * 対象のユーザ情報を更新する
 */
'use strict';
const AWS = require('aws-sdk');
const myRegion = "us-east-2";

AWS.config.update({ region: myRegion});

exports.handler = async (event, context) => {
  const documentClient = new AWS.DynamoDB.DocumentClient({ region: myRegion});

  let responseBody = "";
  let statusCode = 0;

  const { id, firstname, lastname } = JSON.parse(event.body);

  const params = {
    TableName: "Users",
    Key: {
        id: id
    },
    UpdateExpression: "set firstname = :fname, lastname = :lname",
    ExpressionAttributeValues: {
        ":fname": firstname,
        ":lname": lastname
    },
    ReturnValues: "UPDATED_NEW"
  };

  try {
    const data = await documentClient.update(params).promise();
    responseBody = JSON.stringify(data);
    statusCode = 204;
  } catch (err) {
    responseBody = `Unable to patch user ${err}`;
    statusCode = 403;
  }

  const response = {
    statusCode: statusCode,
    headers: {
      "Content-Type": "application/json"
    },
    body: responseBody
  };

  return response;
};

메소드 작성 및 설정




아래와 같이 설정, 빨간색 테두리를 사용하는 것이 번거로워졌습니다.


테스트 실행 및 확인





요청 본문
{
    "id": "02",
    "firstname": "update_firstname",
    "lastname": "update_lastname"
}

업데이트되는지 확인


끝에



이제 서버리스로 REST API를 사용한 CRUD 작성 환경 구축을 했습니다.
다음은 API Gateway+Lambda(NodeJS)+S3를 조합해 나가려고 합니다.

좋은 웹페이지 즐겨찾기