ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • AWS Lambda, CloudWatch log
    생활코딩 AWS 2022. 2. 14. 20:02

    ===

    https://youtu.be/t8sjTFM_tfE

    ===

    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
Designed by Tistory.