교육
-
[81일차] Final Project 프로젝트 정리교육/코드스테이츠 2023. 3. 23. 20:20
프로젝트 소개 프로젝트: 쇼핑몰 구매 고객 리워드 시스템 유저는 사용자인증을 하고 출석, 조회, 수령 서비스를 이용 가능합니다 관리자는 재고 부족 알림을 수신받을 수 있고 재고 조절, 현황 조회를 할 수 있는 출석 리워드 시스템입니다. 리워드 수령 방법 유저 정보 인증 후 하루 한번 출석 체크 일정 출석 횟수를 달성했을 때 해당하는 상품을 수령 ex) 5 일 출석 -> 현금성 포인트 5000원 | 15 일 출석 -> 에어팟 개발 기간 및 인원 2023-03-07 ~ 2023-03-24(약 3주) User - Server: 김태환, 김상윤 Manager - Server: 김지훈, 김건 인프로 구현 요구사항 사용자 인증 시스템과 리워드 시스템은 별개의 도메인으로 설계해야 합니다. 두 개의 시스템은 느슨하게 ..
-
[80일차] Final Project Day_12교육/코드스테이츠 2023. 3. 22. 18:42
Terraform Eventbridge Lambda 작성 resource "aws_iam_role" "cron_lambda_role" { name = "cron_lambda_role" assume_role_policy = jsonencode({ Version = "2012-10-17" Statement = [ { Action = "sts:AssumeRole" Effect = "Allow" Sid = "" Principal = { Service = "lambda.amazonaws.com" } }, ] }) } resource "aws_iam_policy" "cron_lambda_policy" { name = "cron_lambda_policy" policy = jsonencode({ Version = "2..
-
[79일차] Final Project Day_11교육/코드스테이츠 2023. 3. 21. 18:18
Terraform APIgateway 오류 발생 Terraform을 이용해 APIgateway를 구현 완료 후 테스트 시 에러 발생 원인 파악 Terraform 리소스 부족 권한 미부여 Lambda zip파일 오류 Cloudwatch 확인 시 아무 응답도 없다. 필요권한을 확인 후 이상 없음을 확인 콘솔에서 lambda를 테스트해본 결과 정상적으로 실행되며 파일 오류 없음을 확인 Terraform 공식문서를 보면 확인해본 결과 리소스에도 오류가 없음을 확인 콘솔에서 생성된 Lambda만 테스트 해본 결과가 정삭적으로 실행되는 것은 APIgateway 설정이 문제가 있다는것이라 판단함. Terraform으로 생성된 APIgateway를 콘솔에서 확인해본 결과 REST api(v1)으로 동작하고 있었으며, ..
-
[78일차] Final Project Day_10교육/코드스테이츠 2023. 3. 20. 16:42
SQS 람다 생성 람다는 트리거 된 SQS를 통해 메세지를 받고 SES로 통해 매니저에게 메일을 보내야 한다. const AWS = require('aws-sdk'); const sesClient = new AWS.SES(); exports.handler = async (event, context) => { try { const message = event.Records[0].body; const recipient = 'rlawlgnswns@naver.com'; const subject = 'SQS 메세지 알림'; const body = `새로운 메세지 입니다. : ${message}`; const response = await sesClient.sendEmail({ Source: 'rlawlgnswns..
-
[77일차] Final Project Day_09교육/코드스테이츠 2023. 3. 18. 22:23
상품 수량 조절 Lambda 제작 const를 이용해 요청 시 id와 action의 데이터를 뽑는다 action값이 증가, 감소가 아닐 경우 400status를 반환한다 UpdateExpression을 통해 action 값에 따라 특정 값만큼 증가, 감소하도록 항목을 설정한다. ExpressionAttributeNames 및 ExpressionAttributeValues 속성은 실제 값으로 대체될 UpdateExpression를 나타낸다. 리워드 조회 FilterExpression를 사용해 쿼리에 적용될 필터를 설정하여 :user_id 값과 일치하는 항목만 반환되도록 지정한다. ProjectionExpression:을 통해 쿼리에 대해 일치하는 항목을 반환한다. ExpressionAttributeValu..
-
[76일차] Final Project Day_07 ~ 08교육/코드스테이츠 2023. 3. 16. 12:02
Manager Lambda 제작 매니저는 apigateway를 통해 데이터를 람다로 보내고 SNS를 통해 엔드포인트에 맞게 각각의 SQS에 보내야 한다. SNS에서 SQS로 보낼때 요청값 바디에 타입을 설정해 해당 엔드포인트만 받을 수 있게 설정했다. 콘솔에서 SNS 구독 생성 후 메세지 필터링 구독할 엔드포인트 유형을 선택한다. 구독 필터 정책을 통해 원하는 메세지 내용을 입력한다. 메시지 게시를 눌러 테스트 할 수 있다. 문제 도출 상황 설명 리워드 매니저의 서버 아키텍처이다 우리 팀은 각각의 Lambda 서버리스에도 메세지가 손실되지 않기 위해 SNS와 SQS를 설정하여 내결함성을 높인 비동기 방식으로 만들었다. 문제 발생 문제는 Queue를 사용하여 Response를 받을 경우 생긴다. 모든 응답..
-
[74일차] Final Project Day_06교육/코드스테이츠 2023. 3. 14. 17:40
Eventbridge Eventbridge는 다양한 소스의 데이터와 애플리케이션을 연결하는 데 사용할 수 있는 서버리스 이벤트 서비스이다. 규칙을 생성하기 위해선 규칙 유형을 선택해야 한다. 이번 프로젝트에서는 일정에 따라 실행되는 규칙을 선택하고 매일 19시에 이벤트가 생기도록 cron식을 만들었다. 재고 수량 부족 Lambda 이벤트가 발생할때 Lambda함수 핸들러를 호출한다. params는 테이블이름과, ProjectionExpression을 사용해 id, remain 항목만 반환하게 지정했다. params객체에서 scan메서드를 이용해 지정된 기준과 일치하는 테이블의 모든 항목을 반환하고 data 변수에 저장한다. DynamoDB 스캔에서 반환된 항목을 매핑하여 productIds라는 새 배열을..
-
[73일차] Final Project Day_05교육/코드스테이츠 2023. 3. 13. 22:04
역할 분담 이번 프로젝트에서는 부족한 부분을 공부하는 게 목표인 만큼, VPC와 ECS는 경험이 있어 람다와 DynamoDB 제작을 맡기로 했다. DynamoDB Amazon DynamoDB는 완전관리형 NoSQL 서버리스 데이터베이스 서비스이다 DynamoDB의 특징 DynamoDB는 HTTP 통신을 한다. 다른 DB Resource들이 TCP Connection 기반인데 비해, Connectionless 하다. AWS Lambda나 AppSync같은 서버리스 서비스와 잘 어울린다. DynamoDB는 프로비저닝 및 온디맨드 용량 모드를 모두 제공하므로 테이블당 용량을 지정하거나 사용한 리소스에 대해서만 비용을 지불함으로써 비용을 최적화할 수 있습니다. 서버를 프로비저닝, 패치 또는 유지 관리하지 않습니..