AWS-Lambda

강채희·2021년 5월 18일
0
post-thumbnail

[7-1] Lambda란?

기본

  • Serverless의 주축을 담당
    Serverless? 클라우드가 직접 서버를 돌려주며 리소스 사용량에 따라 직접 할당, 문제점도 덜 발생, 사람의 간섭 줄여줌
  • Events를 통하여 Lambda를 실행시킴
    Events? 주어 + 동사에서 동사에 해당(행동을 의미함)
  • NodeJS, Python, Java, GO등 다양한 언어 지원
  • Lambda Function
    Lambda는 다른 서비스를 호출 , 중간에 배치되는 경우가 많다

비용

  • Lambda Function이 실행될때만 돈 지불
  • 매달 1.000.000 함수 호출 시 무료 (그 후로는 유료)

기타

  • 최대 300초(5분) 런타임 시간 허용
  • 512MB의 일시적인 디스크 공간 제공 (/tmp/)
  • 최대 50MB Deployment Package 허용 : 로컬에서 다수의 파일을 압축 파일로 저장한 후 aws에 업로드해 사용 가능
    ** 50MB 초과시 S3버켓 사용

사용용례
1) S3 -> Lambda -> DB
:PutObject가 lamdba를 실행시키고 DB에 깨끗한 데이터 저장
:이때 Lambda는 중간다리 역할을 함
2) IOT -> Lambda -> SNS
:Topic을 통해 데이터 전송해 Lambda함수 호출함
:Lambda를 통해 형변환이 가능함

[7-2] Lambda 실습 - 1

*동시성(Concurency)? 얼마나 많은 함수를 돌릴수 있는지에 대한 설정
1) 새로작성 : 완전 처음부터 설정
2) 블루프린터 사용 : aws에서 종종 사용되는 기능들을 템플릿화 시켜 내가 가져다 쓸 수 있음
3) 서버리스 앱은 리포지토리 찾아보기 : 공유되어지고 있는 간단한 서비스 아키텍쳐를 내가 가져다 쓸 수 있음 (이 안에 lambda함수 구현되어 있음)
4) 컨테이너 이미지 : 함수에 대해 배포할 컨테이너 이미지 선택

실행역할을 다음과 같이 구성됨

코드

[7-3] Lambda 실습 - 2

import json
import boto3					#aws서비스를 리소스적으로 운영가능
from datetime import datetime

client = boto3.client('s3')			#client object생성



def lambda_handler(event, context):
    what_time = datetime.now().strftime("%Y-%m-%d %H:%M:%S")		#현재 시간 가져옴
    #bucket과 key에 대한 정보 가져옴
    bucket = event['Records'][0]['s3']['bucket']['name']
    key = event['Records'][0]['s3']['object']['key']
    try:
        response = client.get_object(Bucket=bucket, Key=key)		#object가져옴
        
        text = response['Body'].read().decode()				#response에 저장
        data = json.loads(text)							
        
        if data['temperature'] > 40:					#40보다 넘는다면
            print(f"Temperature detected : {data['temperature']}C at {what_time}")
            print("Be careful! It's getting really hot!!")
        else:								#40보다 작다면
            print("So far so good")
    except Exception as e:
        print(e)
        raise e

느낀점 : lambda함수에서 내가 원하는 로직을 어떻게 세우는지에 대해 알 수 있었다. 함수와 S3를 연결시켜 값에 따른 출력값이 다르게 나오는 실습을 진행했는데 이부분이 흥미로웠다.

0개의 댓글