-
[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