Lambda 함수와 API Gateway를 사용하여 REST API를 구현해봅니다.
익숙하지 않은 분야라 이상한 점이 있을 수 있습니다.
2021. 9. 30 - 최초작성
Lambda는 코드를 작성한 다음 이벤트에 연결할 수 있는 서버리스 컴퓨팅 환경입니다. 이벤트가 발생하면 코드가 실행됩니다. 여기에선 REST API와 람다 함수를 연결하여 사용합니다.
Lambda 함수가 동작하려면 다음 3가지가 필요합니다.
- 핸들러를 정의해야 합니다. Lambda 함수의 진입점입니다. Lambda 함수는 JSON 형식의 입력을 받으며 보통 JSON 형식으로 결과값을 리턴합니다.
- Lambda에 대한 런타임 환경을 지정해야 합니다. Lambda 함수를 작성하는데 사용한 언어를 선택해줍니다.
- 이벤트를 발생시키거나 또는 전달하는 트리거입니다.
우선 Lambda 함수를 작성합니다.
AWS 관리 콘솔 사이트(https://aws.amazon.com/ko/console/ )에 접속하여 로그인 후, 왼쪽 상단에 보이는 서비스를 클릭합니다.
서비스 목록에서 컴퓨팅 항목에 있는 Lambda를 클릭합니다.
오른쪽 상단에 보이는 함수 생성 버튼을 클릭합니다.
상단에 새로 작성이 선택된 상태에서 함수 이름을 적은 후, 런타임을 Python 3.9로 변경합니다. 이제 오른쪽 하단에 보이는 함수 생성을 클릭합니다.
다음 코드를 복사해서 붙여넣은 후, Deploy 버튼을 클릭합니다.
def lambda_handler(event, context): number1 = event['Number1'] number2 = event['Number2'] sum = number1 + number2 product = number1 * number2 difference = abs(number1 - number2) quotient = number1 / number2 return { "Number1": number1, "Number2": number2, "Sum": sum, "Product": product, "Difference": difference, "Quotient": quotient } |
Test 버튼 옆에 있는 역삼각형 아이콘을 클릭하여 보이는 메뉴에서 Configure test event를 선택합니다.
이벤트 이름을 적은 후, 다음 코드를 복사하여 붙여넣고 생성 버튼을 클릭합니다.
{
"Number1": 2,
"Number2": 3
}
Test 버튼을 클릭하여 실행합니다. 다음과 같은 실행결과가 보입니다.
트리거를 통해 이벤트를 전달받아 Lambda 함수가 실행됩니다.
여기에서는 API Gateway를 트리거로 사용하여 Lambda 함수에 대한 REST API를 생성합니다.
트리거 추가를 클릭합니다.
API 게이트웨이를 선택합니다.
API 유형으로 REST API를 선택하고 보안은 열기를 선택한 후, 추가 버튼을 클릭합니다.
이제 트리거 항목에 API 게이트웨이가 추가되었습니다.
API Gateway에서 제공하는 쿼리 파라미터를 사용하려면 Lambda 함수를 업데이트해야 합니다.
Lambda 함수 코드를 다음과 같이 변경합니다.
import json def lambda_handler(event, context): number1 = int(event['queryStringParameters']['Number1']) number2 = int(event['queryStringParameters']['Number2']) sum = number1 + number2 product = number1 * number2 difference = abs(number1 - number2) quotient = number1 / number2 return { 'statusCode': 200, 'body': json.dumps({ "Number1": number1, "Number2": number2, "Sum": sum, "Product": product, "Difference": difference, "Quotient": quotient}) } |
코드 항목을 클릭 후, lambda_function 탭을 클릭한 후 코드를 복사해주면 됩니다.
Deploy 버튼을 클릭하여 코드를 저장합니다.
구성 항목을 클릭한 후, lambda-example-API 링크를 클릭하여 API Gateway 콘솔로 이동합니다.
실행 경로를 표시하기 위해 "ANY" 링크가 기본적으로 선택됩니다. "ANY" 지정은 API가 모든 HTTP 동사(GET, PUT, POST 등)를 허용함을 의미합니다. 이제 "메소드 요청" 링크를 클릭합니다.
이벤트 객체에 쿼리 매개변수를 추가해야 합니다. 요청 검사기 옆에 보이는 연필 아이콘을 클릭합니다.
본문, 퀴리 문자열 파라미터 및 헤더 검사 로 설정하고 업데이트 아이콘을 클릭합니다.
URL 쿼리 문자열 파라미터 옆에 있는 삼각형 아이콘을 클릭합니다.
쿼리 문자열 추가를 클릭합니다.
이름 란에 Number1을 적고 업데이트 아이콘을 클릭합니다.
Number2도 같은 방식으로 추가합니다.
Number1과 Number2 모두 필수 체크 박스를 체크합니다.
메소드 실행을 클릭합니다.
메소드 요청 박스에 쿼리 문자열 항목이 추가된 것을 볼 수 있습니다.
테스트를 클릭합니다.
메소드를 GET으로 변경하고 쿼리 문자열에 Number1=1&Number2=2 를 입력합니다.
테스트 버튼을 클릭합니다.
다음과 같은 실행 결과가 보여집니다. 로그 항목에서 좀 더 많은 정보를 볼 수 있습니다.
참고
https://stackify.com/aws-lambda-serverless/
https://blog.runscope.com/posts/how-to-write-your-first-aws-lambda-function
'WEB > AWS' 카테고리의 다른 글
AWS Rest API를 Android와 연동해보기( Lambda + API Gateway + DynamoDB ) (0) | 2023.10.15 |
---|---|
AWS Lambda 함수와 API Gateway로 만든 REST API 배포하기 (0) | 2023.10.12 |
AWS Lambda를 사용한 DynamoDB 테스트 (0) | 2023.10.12 |
감정 분석(Sentiment Analysis)을 위해 AWS Comprehend API를 사용하는 REST API를 구현 (0) | 2023.10.12 |
Python으로 AWS Lambda 사용해보기 (0) | 2023.10.12 |
시간날때마다 틈틈이 이것저것 해보며 블로그에 글을 남깁니다.
블로그의 문서는 종종 최신 버전으로 업데이트됩니다.
여유 시간이 날때 진행하는 거라 언제 진행될지는 알 수 없습니다.
영화,책, 생각등을 올리는 블로그도 운영하고 있습니다.
https://freewriting2024.tistory.com
제가 쓴 책도 한번 검토해보세요 ^^
그렇게 천천히 걸으면서도 그렇게 빨리 앞으로 나갈 수 있다는 건.
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!