728x90
- Serverless의 주축을 담당
- Events를 통하여 Lambda를 실행시킴
- NodeJS, Python, Java, GO등 다양한 언어 지원
- Lambda Function
AWS Lambda (비용)
- Lambda Function이 실행될때만 돈 지불
- 매달 1,000,000 함수 호출 시 무료 (그 후로는 유료)
AWS Lambda (기타)
- 최대 300초 런타임 시간 허용
- 512MB의 일시적인 디스크 공간 제공
- 최대 50MB Deployment Package 허용
S3와 lambda에 trigger를 연결해두면 S3에 어떤 object가 들어올 시 람다함수를 실행시켜줍니다.
만약 실시간으로 온도의 정보를 받아오고 일정 이상의 온도가 된다면 lambda 함수를 실행하여 메세지를 출력하는 함수를 만들어 봅시다.
다음처럼 lambda함수를 생성해줍시다.
import json
#
import boto3
from datetime import datetime
# s3를 연동하기 위한 코드
client = boto3.client('s3')
def lambda_handler(event, context):
print(event)
# 현재 시간
what_time = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
# bucket 정보
bucket = event['Records'][0]['s3']['bucket']['name']
# 키 정보
key = event['Records'][0]['s3']['object']['key']
try:
# 오브젝트 정보를 가져옵니다.
response = client.get_object(Bucket=bucket, Key=key)
text = response['Body'].read().decode()
data = json.loads(text)
# S3에 올라온 온도가 40가 넘는다면 메세지를 출력합니다.
if data['temperature'] > 40:
print(f"Temperature detected : {data['temperature']}C at {what_time}")
print("Be careful! It's getting really hot!!")
else:
print("So far so good")
except Exception as e:
print(e)
raise e
다음과 같은 소스 코드를 입력해주고 deploy를 해줍니다.
그런 다음 S3를 새로 만들어 객체의 이벤트 유형을 정해주고 만들어주었던 lambda함수를 연결해줍니다.
# ex1.json
{
"temperature":45
}
json 파일을 S3에 업로드 해줍니다.
cloudwatch에서 만들어준 로그 그룹을 들어가면 로그 스트림이 발생하는 것을 알 수 있습니다.
정상적으로 로그가 찍히는 것을 볼 수 있습니다.
728x90