ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [AWS] Lambda 실습 (Lambda 함수 생성, test)
    AWS 2024. 2. 13. 19:20

    https://ap-northeast-2.console.aws.amazon.com/lambda/home?region=ap-northeast-2#/functions

     

    https://ap-northeast-2.console.aws.amazon.com/lambda/home?region=ap-northeast-2#/functions

     

    ap-northeast-2.console.aws.amazon.com

    Lambda 대시보드에 들어간다.

    전체 계정 동시성 (Concurrency) : 얼마나 많은 함수를 같은 요청이 들어왔을 때 돌릴수있을지에 대한 것

    만약, 설정해 놓은 동시성 수보다 더 많은 함수 호출이 발생한다면 모든 함수는 정상적으로 호출되지 않을 것.

    따라서 사용자의 어플리케이션에 맞게 설정해줘야함.

    Lambda 함수 생성하기

    새로 작성 : 맨땅에 헤딩. 처음부터 함수를 구현할 수 있게 해주는 것

    블루프린트 사용 : AWS에서 종종 사용되는 기능들을 템플릿화 시켜 가져다 쓸 수 있게 할 수 있는 기능

    컨테이너 이미지 : 여기서 말하는 컨테이너는 Docker 컨테이너처럼 AWS에서 운영되는 가상 컨테이너 이미지 저장소를 요구한다.

    ECR : 컨테이너 레파지토리. Lambda가 내포된 컨테이너 이미지를 찾아 배포하여 사용할 수 있다.

     

    본 실습에서는 블루프린트 사용으로 진행.

    블루프린트 이름 : Hello wolrd function python 선택

    함수 이름 : aws-learner-lambda-function

    실행 역할 : 기본 Lambda 권한을 가진 새 역할 생성 선택

    Lambda 함수가 Python 3.7로 생성이 되어있다.

    함수 생성

    만든 Lambda 함수 확인

     

    Test click

    Lambda에 보내고 싶은 값들을 전달할 수 있다.

    ⭢ 함수가 올바른 결과를 출력하는지 확인

     

    이벤트 작업 테스트 : 새 이벤트 생성

    여기서 이벤트란 test와 동의어로 생각하면됨.

     

    이벤트 이름 : AwsLearnerevent (이름 무관)
     

    나만 보게할수도 다름사람들도 보게할수도 있음.

    프라이빗으로 진행.

    default로 설정되어있는   "key1": "value1", "key2": "value2", "key3": "value3"

    {
      "key1": "Plant",
      "key2": "Furniture",
      "key3": "Sport"
    }

    라고 수정을 했다.

    저장 click

    다시 Test click

    함수가 돌아가는데 2.94ms 소요

     

    Response
    "Plant"

    Key1에 해당하는 value값

     

    Function Logs ⭢ 더 자세한 로그를 보여준다.

     

    Key1, Key2, Key3 값은 Print부분에 잘 출력이 되어나왔다

     

    Request ID ⭢유효id 포맷. 매번 Lambda 함수가 실행될때마다 생성되는 고유 id

    이 id를 가지고 cloudwatch에서 검색해서 로그를 찾을 수 있다.

     

    두번째 Test

    8번째 줄에 key1이 아닌 key4를 반환하게끔 하겠다.

    하지만 key4는 없는 값이기 때문에 Error가 날 것이라는 것을 알고있다.

    그럼 Lambda에서 무슨일이 일어나는지 확인해보자.

    코드를 변경하고 Deploy를 눌러서 변경된 코드를 반영시키자.

    다시 Test를 눌러보자.

    Status : Failed 

    에러메시지는

    Test Event Name
    Awslearnerevent
    
    Response
    {
      "errorType": "ReferenceError",
      "errorMessage": "key4 is not defined",
      "trace": [
        "ReferenceError: key4 is not defined",
        "    at Runtime.handler (file:///var/task/index.mjs:8:5)",
        "    at Runtime.handleOnceNonStreaming (file:///var/runtime/index.mjs:1173:29)"
      ]
    }
    
    Function Logs
    2024-02-13T10:16:49.222Z	undefined	INFO	Loading function
    START RequestId: b8213587-0799-49c4-9fdc-eabe9a35e01f Version: $LATEST
    2024-02-13T10:16:49.227Z	b8213587-0799-49c4-9fdc-eabe9a35e01f	INFO	value1 = Plant
    2024-02-13T10:16:49.227Z	b8213587-0799-49c4-9fdc-eabe9a35e01f	INFO	value2 = Furniture
    2024-02-13T10:16:49.227Z	b8213587-0799-49c4-9fdc-eabe9a35e01f	INFO	value3 = Sport
    2024-02-13T10:16:49.228Z	b8213587-0799-49c4-9fdc-eabe9a35e01f	ERROR	Invoke Error 	{"errorType":"ReferenceError","errorMessage":"key4 is not defined","stack":["ReferenceError: key4 is not defined","    at Runtime.handler (file:///var/task/index.mjs:8:5)","    at Runtime.handleOnceNonStreaming (file:///var/runtime/index.mjs:1173:29)"]}
    END RequestId: b8213587-0799-49c4-9fdc-eabe9a35e01f
    REPORT RequestId: b8213587-0799-49c4-9fdc-eabe9a35e01f	Duration: 29.16 ms	Billed Duration: 30 ms	Memory Size: 128 MB	Max Memory Used: 66 MB	Init Duration: 173.07 ms
    
    Request ID
    b8213587-0799-49c4-9fdc-eabe9a35e01f

      "errorMessage": "key4 is not defined",

    key4를 찾을수 없다고 나온다.

    원인 : 이벤트 JSON에 input값이 key1,2,3까지 있고 key4는 없다.

    {
      "key1": "Plant",
      "key2": "Furniture",
      "key3": "Sport",
      "key4": "Car"
    }

     

    만약 이렇게 key4값을 새로 추가 변경해서 저장하고 테스트를 돌리면 아무 에러가 뜨지 않는다.

    'AWS' 카테고리의 다른 글

    [AWS] CloudFront  (0) 2024.02.13
    [AWS] Lambda 실습2 (Lambda 함수 실행 / cloudwatch)  (1) 2024.02.13
    [AWS] Lambda  (1) 2024.02.13
    [AWS] CloudWatch 실습  (1) 2024.02.12
    [AWS] CloudWatch (+ Alarm)  (0) 2024.02.12
Designed by Tistory.