-
AWS Lambda, CloudWatch log생활코딩 AWS 2022. 2. 14. 20:02
===
===
0.1초 동안만 컴퓨터를 빌릴 수 있다면 얼마나 좋을까요? 0.1초 단위로 컴퓨터를 임대해주는 아마존 웹서비스 람다
람다의 실행방법과 디버깅 방법, 아마존의 다른 서비스와 연동하는 방법만을 담았습니다. 이 수업을 들었을 때 람다라는 현대적인 컴퓨터 실행 모델에 대한 큰 틀의 그림이 머리속에 그려질 수 있도록 노력했습니다.
===
코드가 실행되는 0.1초 동안 순간적으로 컴퓨터를 빌렸다가, 코드의 실행이 끝나자마자 자동으로 컴퓨터가 반납된다면? 0.1초의 사용료만 낼 것이다.
현대적인 컴퓨터 사용 모델
===
0.1초 단위로 컴퓨터를 임대해주는 AWS Lambda
1.실행방법
2.디버깅방법
3.가격정책
===
▽함수를 만들면 코드를 쓰고, 여기에 트리거마다 입력값이 들어간다
▽이걸 당장 테스트 해볼 수 있고, 테스트에 입력값을 뭘 넣을지가 테스트 이벤트 구성
클라우드 콘솔 > Lambda 검색
EC2에서는 컴퓨터 한대를 인스턴스
S3라는 파일서버에서는 버킷
Lambda에서는 함수라고 부름
함수 생성 버튼을 누른다
===
블루프린트 : 샘플코드
우리는 새로 작성
함수 이름 : 첫글자소문자그다음단어대문자 쓰시네
런타임 : 어떤 언어로 람다 함수를 만들거냐
함수 생성 버튼 누르기 -> 우리가 작성한 코드를 저장할 공간이 만들어짐
이렇게 생겼다
===
밑에 함수 코드로 가면 샘플 코드가 있다, 최소한만 남기고 저렇게 쓴 뒤
저장(컨트롤+S)
lambda_handler라고 하는 디폴트 함수가 있는데
약속된 이름이다. 람다를 실행했을 때 이 함수가 실행되도록 약속돼있다
이 함수는 event와 context라는 두개의 파라미터를 받도록 약속돼있다
===
실행
Deploy버튼을 클릭해야 실제로 실행 가능한 상태가 된다
실행 방법은 다양한데
여기, 클라우드 콘솔에서 실행
커맨드라인에서 실행
트리거라는걸 통해서 다른 서비스에서 어떤 변화가 생겼을 때 람다를 실행시킬 수도 있다, 가장 강력, 어렵, 좀 이따 함
===
클라우드 콘솔에서 실행
테스트 이벤트 선택(테스트 이벤트 구성) : 함수가 실행될 때 어떤 값들을 입력할 것인가
+ 테스트 버튼 클릭
입력값이 없어서 중괄호만 남겨놓음
생성하면
이렇게
테스트버튼 누르면 함수가 실행
에러가 없으면 성공
세부정보 클릭
리턴값, 기간(실행되는 시간, 0.95밀리세크), 청구기간은 0.1초로 치겠다
로그 출력 : 실행된 것 관련된 히스토리
===
입력 값
을 줘보자
약속을 따라야 한다
테스트 이벤트 구성 다시 클릭
이런 값을 주입하고 생성하고 테스트버튼을 누르면
저 left, right의 값이 lambda_handler의 입력값으로 들어감
뭔말이야? 메뉴얼 보면 알 수 있지만 event를 한번 출력해보자
> Deploy > 테스트
이렇게 나온다
그럼 코드를 이렇게 바꾸고
> Deploy > 테스트 이벤트 구성
> 테스트
===
디버깅
람다함수를 이용하는 경우에 버그를 찾거나
람다가 동작하는 메커니즘을 이해하기 위해 디버깅 방법 알아보기
print()하면 로그에 결과가 출력이 됨
로그는 클라우드 콘솔에서 실행할 때만 볼 수 있음
다른 서비스와 연동해서 내 눈앞에서가 아니라 자동으로 실행되게 하면 볼수가 없어
어디서 볼 수 있어
모니터링 > CloudWatch에서 로그 보기> 로그 > 로그 그룹으로 들어오게됨
Log stream이라는 것들이 여러개가 있는데, 제일 위가 제일 최신이다 (9:08초)
들어가보면
여기서 주의해야할건 로그스트림은 소스코드를 수정할때마다 새로운 로그스트림이 만들어지고 그때부터 코드 수정하기 전까진 거기에 계속 쌓인다. 코드수정, 저장, Deploy, 테스트 테스트 테스트 하면 한 로그스트림에 쌓여. 이후 코드를 수정하면 새로운 로그스트림에 쌓여
람다에서 디버깅을 하는 가장 핵심적인 방법인 로그
CloudWatch의 로그는 바로는 안생겨, 몇초 기다려야돼
===
trigger(방아쇠)
지금까지 했던건 테스트 버튼이라는 방아쇠
Lambda가 진짜 파워풀한 이유는 다른 AWS서비스들과 연동된다는 것
람다 함수를 실행시키는 방아쇠 추가
API 게이트웨이 : 어떤 URL로 접속했을 때 람다가 실행되도록
DynamoDB : AWS에 있는 DynamoDB라는 데이터베이스에 어떤 일이 발생했을 때 호출
S3 : 파일서버서비스, 파일이 업로드 됐을 때 호출
===
S3 + Lambda
버킷안에 파일을 업로드 했을 때 람다함수가 실행되게 해보자
실행되면서 업로드한 파일의 이름을 알아내기
트리거에
버킷 지정
이벤트 - 모든
재귀 호출에 체크
추가하면
helloLambda를 실행하는 트리거로서 S3가 추가됨
S3를 눌러보면
속성 탭 > 이벤트 알림에 람다함수가 추가돼있다
S3에 파일을 올려보고 함수가 실행될 때 event에 어떤게 들어오는지 찍어보기
더이상 left, right는 들어오지 않을 것이기 때문에(▽그건 테스트니까) S3로 바꿈
저장 > Deploy(반영) > S3에서 파일 올리기
잘 됐는지 확인하기 위해선 모니터링 > CloudWatch에서 로그 보기 > 새로운 로그스트림이 나올 때까지 새로고침
이게 S3가 람다펑션에게 전달한 입력값
이걸 바탕으로 파일의 이름을 알아내는 코드를 적어보기
팁 : 저 코드를 테스트 이벤트 구성에 붙여넣기한다, 저장하려고 하면 JSON에 형식에 안맞는다고 안됨
작은 따옴표를 큰 따옴표로만 바꾸면 됨
이런 사이트가 있네요
이렇게 보기좋게 바꿔주네요
게다가 자동으로 ' 를 " 로 바꿔줘요
저걸 copy해서
붙여 넣으면 아~ S3는 이런 형식의 데이터를 입력값으로 주는구나
생성하고
저렇게 예쁘게 보이니까 저걸 보고 코드를 쓰는 것
event[ : .이 아니고 대괄호네 생코도 헷갈려했다
event['Records'] 이 밑에 Records가 배열이니까
찍힌거 보면
hello.txt가 찍힌 걸 볼 수 있다
저걸 리턴값으로 주면
어떤 파일이 업로드 됐는지 알 수 있는 코드가 됐다
===
성능과 가격 정책
람다가 우리한텐 컴퓨터가 보이지 않는 상태로 실행되지만 사양이 다 다다름
기본설정 에 편집 버튼
최대 메모리 저거, 메모리에 비례해서 CPU가 지정됨, 저 컴퓨터를 찰나동안 빌린 것임
===
람다의 가격정책 페이지
크게 두가지의 값을 측정, 더해서 요금계산
요청 수 : 함수가 몇번 요청됐는가
기간 : 컴퓨터가 얼마나 사용됐는가
람다 프리티어는 1년 아님, 언제나 제공됨
1GB의 컴퓨터 40만초 동안 공짜
AWS Pricing Calculator 검색하면 요금 계산할 수 있는 계산기가 있다
람다를 선택하고 들어가서
1000ms가 1초
'생활코딩 AWS' 카테고리의 다른 글
AWS Launch Template (0) 2022.04.08 AWS ELB - Elastic Load Balancer (0) 2022.04.06 AWS EC2 (0) 2022.02.13 AWS Educate (0) 2022.02.13 AWS1, ~EC2 종료, AWS탈퇴까지 (0) 2021.08.08