반응형
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] 버튼을 클릭해 저장합니다.
반응형
'AWS' 카테고리의 다른 글
[AWS] DynamoDB - 테이블 생성하기 (0) | 2021.12.08 |
---|---|
[AWS] DynamoDB 와 DocumentDB 의 차이점 (0) | 2021.11.02 |
[AWS] Cognito - 회원가입 (with Node.js) (0) | 2021.10.18 |
[AWS] Cognito - 사용자 풀 생성하기 (0) | 2021.10.18 |
[AWS] Route53 도메인 구입하기 (0) | 2021.10.12 |