클라우드 엔지니어/클라우드 캠프과정

AWS Lambda API Gateway

해아's 2022. 9. 30. 15:37

파이썬의 기초를 배워서 이제 AWS에서 람다를 활용해 함수들을 만들수있다.

 

10메가 이상은 S3에서 불러올수있고

그이하는 직접 작성하여 zip파일로 올릴수있다.

 

함수를 만들고

 

테스트를 할때 테스트 이벤트를 생성하여

테스트 서버에 이벤트값는 json 방식으로 event 전달된다.

	Lambda 함수를 만드는 시점에 서비스가 코드를 실행할 때 AWS Lambda가 호출할 수 있는 코드의 함수인 핸들러를 지정합니다. 
	Python에서 핸들러 함수를 생성할 때 다음과 같은 일반적인 구문 구조를 사용합니다.

		import json
	
		print('Loading function')
	
		def lambda_handler(event, context):
		    #print("Received event: " + json.dumps(event, indent=2))
		    print("value1 = " + event['key1'])
		    print("value2 = " + event['key2'])
		    print("value3 = " + event['key3'])
		    return event['key1']  # Echo back the first key value
		    #raise Exception('Something went wrong')

	event - AWS Lambda는 이 파라미터를 사용하여 이벤트 데이터를 핸들러에 전달합니다. 이 파라미터는 일반적인 Python dict 유형입니다. 
		또한 list, str, int, float 또는 NoneType 유형이 될 수 있습니다.

	context - AWS Lambda는 이 파라미터를 사용하여 실행 시간 정보를 핸들러에 제공합니다. 이 파라미터는 LambdaContext 유형입니다.

코드변경후 Deploy(배포) 를 눌러야 적용된다.

 

import json
import random

def lambda_handler(event, context):
    result = int(event['num1']) + int(event['num2'])
    return result  # Echo back the first key value
    #raise Exception('Something went wrong')

함수를 사용하기 위해선

트리거가 필요하다

Amazon API Gateway

REST API

api > Lambda > 결과값출력

GET > 일반적인 요청

POST > 요청(저장)

PATCH > 요청(수정)

DELETE>요청(삭제)

보통 HEAD 와  OPTIONS 은 사용하지 않는다.

 

GET 방식으로 생성해서 테스트해보자

맵핑하지않으면 적용이안되므로 맵핑 템플릿을 만들어 줘야한다.

/openapi - GET - 통합 요청

application/json

#set($allParams = $input.params())
{
#set($params = $allParams.get("querystring"))
#foreach($paramName in $params.keySet())
"$paramName" : "$util.escapeJavaScript($params.get($paramName))"
    #if($foreach.hasNext),#end
#end
}

 

/openapi - GET - 메서드 요청

 

쿼리문자열 파라미터 추가

리소스> 스테이지생성

하고 주소접속하면

된다

 

url + 스테이지 + 리소스

EC2는 시간당 Lambda 는 건당 비용이므로 상황마다 사용을 잘활용하자

 

728x90
반응형