AWS

AWS Lambda 기초 개념 및 간단 사용

Joon0464 2021. 7. 3. 16:20

AWS Lambda란?

Lambda는 AWS의 서버리스 컴퓨팅 서비스로 서버를 프로비저닝할 필요 없이 특정 이벤트에 대한 응답으로 코드를 실행할 수 있다.

  • 완전 관리형 컴퓨팅 서비스
  • 상태 비저장 코드 실행
  • Node.js, Java, Python, C#, Go, Ruby를 지원
  • 이벤트가 트리거되면 그에 대한 응답으로 코르를 실행하는 방식

AWS Lambda의 작동 방식

Lambda의 핵심 구성 요소는 Lambda 함수와 이벤트 소스이다.

이벤트 소스는 이벤트를 게시하고, Lambda 함수는 이벤트를 처리하도록 사용자가 작성하는 사용자 지정 코드이다.

 

AWS Lambda 함수 생성 및 사용법

1. 람다 생성 및 간단한 테스트

Lambda 콘솔에서 함수 생성을 클릭한다.
함수 이름을 지정하고 런타임을 Python3.8로 지정한다.
간단한 테스트를 위해 코드를 위와 같이 작성하고 Deploy한다.
테스트 탭에서 새로운 테스트 이벤트를 위와 같이 생성하고 변경 사항을 저장한다.
다음과 같이 실행결과가 성공으로 출력된다.
세부 정보를 클릭하면 작성한 코드의 return으로 1+2의 값인 3이라는 결과가 출력된 것을 볼 수 있다.

2. 입력값에 따라 다른 값이 출력되도록 해보기

새로운 테스트 이벤트를 위와 같이 작성하여 생성한다.
실행할 코드를 위와 같이 변경한다. print(event)는 함수에서 event인자를 어떻게 받아오는지 테스트해보기 위해 넣어주었다.
테스트 버튼을 눌러 테스트를 진행하고 실행 결과의 세부정보를 살펴본다. left + right 값이 계산되어 3이 출력된 것을 볼 수 있다. 로그 출력 부분에 print(event) 가 출력된 것을 볼 수 있다. 즉 event는 이벤트가 트리거 될 때 값을 받아오게 된다. 즉, 코드에 작성한 event['left'] =1, event['right']=2가 된다.
모니터링 탭에서 CloudWatch에서 로그 보기를 클릭하여 로그를 볼 수 있다.
로그 그룹으로 페이지가 이동되며 로그 스트림을 클릭하면 상세 로그를 볼 수 있다.
방금 실행한 테스트 결과로 나타났던 로그를 똑같이 볼 수 있다.

3. S3를 트리거로 추가하여 S3에 업로드한 파일 이름 출력하기

S3 콘솔에서 버킷 만들기를 클릭한다.
버킷이름을 지정하고 리전은 반드시 생성한 람다 함수와 같은 리전에 생성한다.
다음과 같이 버킷을 생성한다.
생성한 람다에서 트리거 추가를 클릭한다.
S3에 모든 객체 생성 이벤트가 발생했을 때 함수가 실행되도록 트리거를 추가한다.
테스트 코드를 우선 다음과 같이 작성하고 Deploy한다.
s3 버킷에 파일 아무거나 업로드해본다.
새로운 로그 스트림이 생성되었으며 해당 로그 스트림을 클릭한다.
로그를 살펴보면 print(event)의 값을 볼 수 있다. 해당 부분을 복사한다.
다음 링크에서 복사한 JSON을 보기 좋게 바꿔주고 변환된 JSON을 다시 복사한다.

https://jsonformatter.curiousconcept.com/#

 

JSON Formatter & Validator

Format and validate JSON data so that it can easily be read by human beings.

jsonformatter.curiousconcept.com

복사한 JSON 코드는 아래와 같다.

{
   "Records":[
      {
         "eventVersion":"2.1",
         "eventSource":"aws:s3",
         "awsRegion":"ap-northeast-1",
         "eventTime":"2021-07-03T07:13:37.529Z",
         "eventName":"ObjectCreated:CompleteMultipartUpload",
         "userIdentity":{
            "principalId":"AWS:AIDA3AHBWNTQ2DRXBHOWJ"
         },
         "requestParameters":{
            "sourceIPAddress":"211.226.44.59"
         },
         "responseElements":{
            "x-amz-request-id":"3GZ5Z2XYQZ8Q5N0P",
            "x-amz-id-2":"nAOqconGlPxkBANhZdo6QX5XPPTpAIzwMzkuhlXeNSBuCf88Y8W/521Zee0COw6NQl+ar6f1KfDTyhU5mG76a6xR8WOqz8ht"
         },
         "s3":{
            "s3SchemaVersion":"1.0",
            "configurationId":"2f82c24d-2eb2-473e-8694-c31ac5743aed",
            "bucket":{
               "name":"myfirsttestbucket0464",
               "ownerIdentity":{
                  "principalId":"A9DSGTC04WT85"
               },
               "arn":"arn:aws:s3:::myfirsttestbucket0464"
            },
            "object":{
               "key":"SamsungNotesMicrosoftStore.zip",
               "size":92172438,
               "eTag":"1f34797c45b5d7a6867a00b8164a24e3-6",
               "sequencer":"0060E00E1B2CFA2039"
            }
         }
      }
   ]
}

복사한 JSON 코드를 이용하여 새로운 테스트 이벤트를 생성한다.
코드를 위와 같이 수정하고 Deploy 한다.
Test 버튼을 클릭하여 테스트를 진행하면 아까 업로드했던 파일명이 실행 결과로 출력된다.

참고 영상

https://www.youtube.com/watch?v=t8sjTFM_tfE&ab_channel=%EC%83%9D%ED%99%9C%EC%BD%94%EB%94%A9