Lambda 함수를 trigger 거는 방법에는 여러가지가 있지만 그중에서도 AWS 외부에서 lambda 에 요청을 보내기 위해서 API Gateway 와 연동하게 되면, lambda 함수를 빠르게 서버리스로 배포할 수 있다. API Gateway 와 Lambda 서비스를 사용하여 Serverless HTTP API 를 배포하는 방법에 대해 알아보자
우선 AWS 에서 API Gateway > Create API 를 선택하고, HTTP API 타입을 선택한다.
생성하게 될 HTTP API 이름을 적는다.
HTTP method 를 여기서도 정의할 수 있지만 우선 넘어가고, 나중에 한번에 정의하도록 한다.
API 배포를 관리하기 위한 Stage 이름을 정한다.
구성 내용을 확인하고 Create 버튼을 눌러 API Gatway 를 생성한다.
API 생성 후에, Route 와 Method 를 정할 것이다. 우선 GET 방식으로 /students 경로를 생성하자.
생성하게 되면 다음과 같이 route와 GET 방식으로 설정해 놓은 것이 보이게 된다.
GET 요청시 'name'이라는 parameter 를 받을 수 있도록 다음과 같이 경로를 지정한다. -> /students/{name}
AWS > Lambda 서비스로 넘어가서, 이번에는 새로운 lambda 함수를 생성한다.
Lambda 함수는 다음과 같이 구성하였다. event를 통해 GET 요청이 왔을 때 lambda에서 'name' 이라는 parameter를 성공적으로 받은 경우 200을 return 하도록 구성했다. 반면 'name' 이라는 parameter 를 받지 못하면 400을 return 하고 error message를 body 에 보내도록 구성했다.
참고로 lambda에서 API Gateway 를 통해 event를 받을 때 'queryStringParameters' 하위에서 parameter들을 파싱할 수 있다.
import json
def lambda_handler(event, context):
print("EVENT TYPE:", type(event))
print("EVENT:", json.dumps(event))
print("queryStringParameters:", json.dumps(event['queryStringParameters']))
name = event['queryStringParameters']['name']
if name:
response = {
"statusCode": 200,
"body": f"[SUCCESS] Parameter 'name': {name}"
}
else:
response = {
"statusCode": 400,
"body": "[Error] Parameter 'name' not found in the request"
}
return response
다시 API Gateway 서비스로 넘어가서 위에서 생성한 lambda 함수와 연동하는 작업을 진행할 것이다. /students > GET 에서 'Attach Integration' 을 선택한다.
위에서 생성한 lambda 함수를 선택하면 된다.
Lambda와 Gateway API 가 통합되면 아래와 같이 GET 방식 옆에 'AWS Lambda' 라는 표시가 뜨게 된다. /students/{name} 경로를 통한 GET요청에 대해서도 위와 동일한 lambda 함수를 연동해준다. 아래에서 'Attach Integration' 버튼을 누르면 된다.
아래와 같이 보이게 되면 Lambda 함수와의 연동이 제대로 된 것이다.
API에서 CORS 설정 탭을 눌러서, 설정을 해준다. CORS 는 테스트를 위해 모든 방식 접근 허용 & 모든 IP 허용으로 설정해주었다.
Lambda 서비스로 가서 위에서 생성한 함수를 확인해보면 다음과 같이 API Gateway 가 Trigger로 연결이 되어 있는 것을 확인할 수 있다.
Configuration > Triggers 를 보면 2개의 경로에 대해 연동이 되어 있는 것을 확인할 수 있다.
마지막으로, 실제로 연동이 잘 되었는지 curl 명령어로 API Gateway 에 다음과 같이 GET요청을 보내서 확인해본다.
동일하게, 웹브라우저에서도 접근이 가능한 것이 확인된다.
위와 같이, 간단한 lambda 함수를 빠르게 배포해서 사용하는 경우 API Gateway 와 연동해서 써볼 수 있을 것 같다!! 몇번의 클릭이면 배포가 되는 서버리스 특성상 빠르고 쉽게 배포할 수 있는 것 같다. aws 서비스들 중에서도 클라우드 서비스의 장점이 보이는 서비스라고 느껴진다.
'Cloud Engineering > AWS' 카테고리의 다른 글
[AWS] EBS 볼륨 늘리기 및 파일시스템 파티션 확장하기 (0) | 2024.08.20 |
---|---|
[AWS] EC2 인스턴스 사양 바꾸기 (scale up & scale down) (0) | 2024.06.02 |
[AWS] AWS Data Analytics Specialty 합격 및 시험 후기 (0) | 2023.10.15 |
[AWS] Solutions Architect Associate 03 시험 준비 방법과 Tip (합격!!) (0) | 2023.09.28 |
AWS 인스턴스 가격 정책과 인스턴스 종류 (0) | 2023.09.16 |