[AWS]Lambda 기초(+ API Gateway: POST)

박민하·2022년 7월 25일
0

AWS

목록 보기
3/11
post-thumbnail

  AWS Lambda는 서버를 프로비저닝 또는 관리하지 않고도 실제로 모든 유형의 애플리케이션 또는 백엔드 서비스에 대한 코드를 실행할 수 있는 이벤트 중심의 서버리스 컴퓨팅 서비스입니다. 200개가 넘는 AWS 서비스와 서비스형 소프트웨어(SaaS) 애플리케이션에서 Lambda를 트리거할 수 있으면 사용한 만큼만 지불하면 됩니다.

출처: aws amazon

✅ Lambda 특징

  • 서버 세팅 없이(serverless) 함수가 호출되어 코드를 실행시키는 방식
    • 서버 관리에 대한 부담이 줄어듦
  • warm start & cold start
    • cold start 특성으로 초기 지연시간이 있음
  • 함수가 호출될 때만 코드가 실행되어 비용이 절감됨(ms단위로 과금)
  • 리소스 제한(최대 5분까지 사용 가능, 메모리 사용량 제한)
  • 장시간 사용할 경우에는 EC2를 사용하는게 경제적임

✅ Lambda 시작

✔ 함수 생성

  Lambda에서 함수란 하나의 서비스 단위를 의미한다. AWS Lambda로 가서 함수를 만들어보자. AWS Lambda 시작하기 버튼을 누르면 함수 생성을 하는 페이지가 나온다.

  함수 이름은 testLambda로 하고, python 3.9 버전으로 코드를 작성할 것이다. IAM 권한은 기본 권한으로 생성.

✔ 함수 작성

  함수 생성 버튼을 누르면 아래와 같은 기본 화면이 나온다. 여기서 사용한 함수 예문은 Python으로 작성한 Lambda 함수 핸들러에서 참고했다.

  런타임 설정에서 코드 작성 언어, 파일명, 함수명을 변경 할 수 있다. 기본적으로 파일명은 lambda_function, 함수명을 lambda_handler로 되어있다. 우선 코드 소스만 좀 변경해봤다.

✔ 함수 테스트

  작성한 코드는 테스트 카테고리에서 테스트한다. 먼저 위에서 작성한 함수를 ctrl+c로 저장을 하고 deploy 버튼을 누른다. 테스트 이벤트를 작성하고 저장, 테스트 버튼을 누르면 실행 결과를 볼 수 있다.

  리턴값, 코드를 실행하는데 걸리는 시간, 사용되는 메모리 크기 등의 세부 정보를 알 수 있다.

✅ API Gateway

✔ 트리거 추가

  +트리커추가 버튼을 누르면 lambda 함수를 실행할 수 있는 이벤트인 트리거를 추가할 수 있다. REST API를 선택하고 추가 버튼 클릭.

  트리거를 추가하면 아래 사진처럼 트리거가 1개 만들어진 것을 볼 수 있다.

  여기서 API endpoint에 접속하면 아까 만들었던 함수가 실행이 되지만, 그 전에 POST 리소스를 만들어야 한다.

✔ POST 설정

  API Gateway 옆에 testLambda-API를 클릭하면 API를 관리할 수 있는 페이지로 이동한다. 여기서 작업 > 메서드 생성 > POST 순으로 클릭한다.

  여기서 작업 > 메서드 생성 > POST 클릭. lambda region은 여기서 확인할 수 있다. 지금 선택한 지역은 서울이다. Lambda 함수에 아까 만들었던 함수 이름을 적고 저장을 누른다.

  POST 메서드가 만들어졌다!

1. 메서드 요청(Method request)

  여기서 Request Body에 전송할 Content Type을 지정할 수 있다. json 데이터를 전송하기 위해 + 모델 추가를 클릭해서 application/json 을 선언한다.

2. 통합 요청(Integration request)

  받은 body 값을 어떻게 endpoint로 보낼지 지정할 수 있다. 우선 content type를 application/json 로 선언한다. 값을 JSON 문자열로 반환하기 위해 $input.json('$') 변수를 작성하고 저장한다. 더 다양한 매핑 템플릿 변수는 여기서 확인.

✔ 배포

  마지막으로 리소스를 배포하고 테스트를 하면 된다. 작업 > API 배포를 클릭.

✔ 테스트

  테스트를 클릭하고 Request Body에 {"first_name": "John", "last_name": "Smith"}를 넣고 테스트 버튼을 누르면,

  {"message": "Hello John Smith!"} 반환 성공!

✔ Postman으로 테스트


참고 사이트
AWS Lambda 개발자 안내서 - 공식문서
[클라우드] AWS 의 EC2, Fargate, Lambda에 대해서 알아보자!
[AWS] 📚 람다(Lambda) 개념 & 사용법 💯 총정리
[AWS] Lambda API Gateway POST 통신 하기

profile
backend developer 🐌

0개의 댓글