AWS

[AWS] Mysql Lambda 생성하기

itaeiou 2021. 10. 18. 17:44
반응형

Database에 user status를 업데이트하는 Lambda를 만들어보겠습니다.

함수 생성

1. AWS Console Lambda에서 [함수 생성]을 클릭합니다.

 

2. 함수 이름을 작성하고 [함수 생성]을 클릭합니다.

 

Mysql 라이브러리 세팅

Lambda는 npm install과 같은 명령어 실행이 불가능하기 때문에,

로컬에 필요한 모듈들을 설치한 후 업로드 해야합니다.

때문에 임시 프로젝트를 생성해 npm module을 세팅하겠습니다.

1. npm init

기본 설정으로 만들기위해 모두 엔터로 넘어갑니다

 

2. mysql2 모듈을 설치합니다.

npm install mysql2 --save

 

3. lambda_test 폴더를 압축합니다.

 

4. Lambda에 zip파일 업로드

.zip파일에서 업로드를 클릭하여

생성된 압축파일을 선택하고 [저장]버튼을 클릭합니다.

 

코드 작성

1. New File 생성

zip파일을 업로드하고 나면 기존의 코드가 모두 사라지기 때문에 index.js 파일을 다시 생성합니다.

New File 클릭 - index.js 로 저장

 

2. mysql 코드 작성

host, database, user, password에 연결할 DB 정보를 입력합니다.

const mysql = require('mysql2/promise');
const pool = mysql.createPool({
    host: DB_HOST,
    database: DB_NAME,
    user: USER,
    password: PASSWORD,
    port: 3306,
    connectionLimit: 20,
    waitForConnection: false
});

 

3. handler 코드 작성

람다 실행시 exports.handler가 호출되기 때문에 변경되서는 안됩니다.

handler 안에 필요한 코드를 작성합니다.

exports.handler = async (event, context, callback) => {
  context.callbackWaitsForEmptyEventLoop = false;
  
  let user_id = event.request.userAttributes.email;
  
  const connection = await pool.getConnection(async conn => conn);
  try {
    await connection.query(`
      UPDATE users
      SET
        role = 'users_role_Y'
      WHERE user_id = ?
  `, user_id);

    callback(null, event);
  } catch (err) {
    console.log(err);
    callback(null, event);
  } finally {
    connection.release();
  }
};

 

4. [Depoly] 버튼을 클릭해 저장합니다.

반응형