AWS Lambda란?
WS Lambda는 서버리스(서버없음) 아키텍처를 사용하는 서비스로, 코드를 실행하고 확장할 수 있는 컴퓨팅 리소스를 제공합니다.
사용자는 Lambda 함수를 만들고 업로드하면, 해당 함수는 필요할 때마다 자동으로 실행되며, 사용자가 요청할 때마다 서비스를 처리하므로, 사용자가 서버를 유지하거나 관리할 필요가 없습니다.
- Lambda 함수는 일련의 이벤트 트리거에 의해 실행됩니다.
- 예를 들어, S3 버킷에 파일이 업로드되면 Lambda 함수가 실행됩니다.
- Lambda 함수는 작업을 처리하고 결과를 반환합니다.
- Lambda 함수는 다양한 프로그래밍 언어로 작성할 수 있습니다.
- Python, Node.js, Java, C#, Go 등이 지원됩니다. 사용자는 자신이 원하는 언어로 코드를 작성하고, 해당 코드를 Lambda 함수로 변환하여 업로드합니다.
- Lambda 함수는 필요에 따라 자동으로 확장됩니다.
- 즉, 함수가 많은 요청을 받으면 AWS는 자동으로 함수를 확장하고, 추가 리소스를 제공하여 더 높은 트래픽을 처리할 수 있도록 합니다. 이렇게 함으로써 사용자는 대규모 트래픽을 처리하기 위해 인프라를 스케일링할 필요가 없으므로, 비용을 절감할 수 있습니다.
가격책정
- 프리티어 10000000만건의 람다 함수 호출 제공
- 프리티어 최대 400000GB 메모리 사용량 제공
람다기능 생성하기
함수생성 ->
저는 파이썬 3.8로 했습니다
함수 이름 : 본인이 원하는 이름
런타임 : 구동할 언어 및 버전
함수 생성
함수 생성 후 코드 소스가 나온다
import json
def lambda_handler(event, context):
print("이거 잘 실행되는거야?");
print(event);
body = "hello world";
return {
'statusCode': 200,
'headers': {
'Content-Type': 'application/json'
},
'body': json.dumps(body)
}
꼭 deploy로 저장 후에 Test
test이름을 생성하고 실행결과를 확인할 수 있습니다.
구성 탭에 편집으로 들어갑니다 (간단한 설정으로 람다함수의 퍼포먼스 증가)
- 메모리 증가가 가능합니다 10280MB(10기가)(속도가 빨라짐을 의미, 단 비용은 증가됨)
- 시간 초과 기준을 3초~15분까지 설정이 가능함
코드 source탭에서는 언제나 수정이 가능합니다.
에러로그의 확인
API Gateway로 REST서버 구축
API Gateway
AWS Lambda 함수를 API Gateway와 연결하면 API를 만들 수 있습니다.
API Gateway는 RESTful API를 생성할 수 있는 AWS 서비스입니다.
이 API는 Lambda 함수와 연결되며, 사용자는 API Gateway를 통해 Lambda 함수를 호출하고 함수가 반환하는 결과를 받을 수 있습니다.
이렇게 만들어진 API를 사용하여 AWS Lambda 함수를 외부에서 호출할 수 있으며, 서버리스 아키텍처의 핵심 기능 중 하나입니다.
AWS Lambda와 API Gateway를 함께 사용하면 사용자는 코드를 쉽게 실행하고 스케일링하며, 더 나은 성능과 안정성을 제공할 수 있습니다.
Lambda에 API Gateway 요청경로 적용하고 배포하기
- API 생성 -> RESTAPI 구축
2. API 이름 및 지역 설정
(엣지 최적화 -> 유럽같은 경우 리전이 여러개일 수 있다 그 중 가장 가까운 것을 선택해줌)
3. API 생성
생성하면 api가 들어가고
1. 요청경로를 작성합니다. /hello
2. /hello 라는 요청이 만들어 지고 여기에 람다함수를 연결할 수 있습니다.
- 두번째 람다함수를 간단하게 작성하고 연결합니다.
- 함수명 lambda-api-gateway-hello
3. 람다를 브라우저(클라이언트) 에서 요청보내고 싶으면 최종적으로 배포를 해야합니다.(부메랑으로 확인가능)
- API배포 클릭
- 이름 devAPI
4.최종 URL이 나오게 되는데 브라우저에서 확인합니다.
- 루트경로는 URL
- 요청경로 hello는 URL/hello 로 확인이 가능합니다.
- 배포의 상태는 스테이지 탭 에서 확인이 가능합니다.
Lambda에 API Gateway 요청 권한 주기
1. IAM권한을 이용해서 권한이 있는 사람만 접근하도록 처리
권한설정할 메서드 클릭
편집 클릭
권한 부여 - iam만 접근가능
(쿼리 문자열 파라미터 설정하면 사용가능)
저장하고 API 배포를 다시해야된다
권한이없으면~
API키를 발급하여 API키를 가진 모든 사용자가 접근하도록 처리할 수 있습니다.
실습
1.lambda-demo-api-bye메서드를 하나 생성합니다.
import json
def lambda_handler(event, context):
if 'body' in event:
body = event['body']
print("Received data:", body)
return {
'statusCode': 200,
'headers': {
'Content-Type': 'application/json'
},
'body': json.dumps("bye method return")
}
2. API게이트웨이 에서는 (리소스생성) /bye POST요청을 하나 생성합니다. lambda-demo-api-bye메서드랑 연결하면 됩니다.
3. 배포 스테이지에서 기존배포를 이용해서 deploy를 처리하세요.
4. 부메랑 or 포스트맨에서 POST방식으로URL주소로 요청을 보내면 됩니다.
5. URL 쿼리 문자열 파라미터 탭에서 name 파라미터를 추가하세요.
6. 부메랑 or 포스트맨 을 이용해서 name파라미터를 전달하고, cloudwatch를 통해서 리퀘스트 값을 확인해보세요.