메인 콘텐츠로 건너뛰기

AWS Lambda로 자동화하는 클라우드 관리: 실시간 알림부터 리소스 정리까지

설탕사과
설탕사과
조회수 23
요약

AWS Lambda 활용 지식 카드: 클라우드 자동화 4가지 대표 사례 (+파이썬 코드 예시)


1. EC2 인스턴스 생성 실시간 알림 받기

갑작스러운 EC2 인스턴스 생성은 예상치 못한 비용 부담의 원인이 됩니다. Lambda와 EventBridge를 연동하면, 인스턴스 생성 이벤트를 실시간으로 감지하여 Slack이나 이메일로 즉시 알릴 수 있습니다.

실생활 비유 도어벨이 울릴 때 곧바로 알 수 있듯, 새 EC2가 나오면 바로 알림을 받게 됩니다.

적용 방법 & 핵심 파이썬 코드

  1. EventBridge에 EC2 인스턴스 생성 이벤트 Rule 설정

  2. EventBridge가 Lambda를 Trigger

  3. Lambda에서 Slack Webhook API로 메시지 전송

import json
import requests

def lambda_handler(event, context):
    instance_id = event['detail']['instance-id']
    message = f"새 EC2 인스턴스가 생성되었습니다: {instance_id}"
    slack_webhook_url = "https://hooks.slack.com/services/XXXXX/XXXXX/XXXXX" # 실제 웹훅 URL 입력
    
    requests.post(slack_webhook_url, data=json.dumps({"text": message}))
    return {"status": "알림 전송"}

핵심 효과

  • 불필요한 인스턴스 바로 확인

  • 비용 통제 및 보안 강화

  • 운영팀의 추적 시간 단축


2. S3 이미지 업로드 → 자동 리사이즈 & 최적화

사용자가 올린 큰 이미지는 서버 리소스와 저장공간을 빠르게 소모합니다. Lambda가 S3에 이미지가 업로드될 때마다 자동으로 리사이즈/압축을 수행해 효율적 관리가 가능합니다.

실생활 예시 네이버 블로그/인스타그램에서 자동으로 사이즈가 맞춰지는 것과 같은 원리입니다.

적용 방법 & 핵심 파이썬 코드

  1. S3의 객체생성 이벤트로 Lambda 트리거

  2. Lambda에서 이미지 크기·포맷 변환

  3. 최적화 이미지 S3에 재업로드 (또는 덮어쓰기)

from PIL import Image
import boto3
import io

def lambda_handler(event, context):
    s3 = boto3.client('s3')
    bucket = event['Records'][0]['s3']['bucket']['name']
    key    = event['Records'][0]['s3']['object']['key']
    
    # S3에서 이미지를 다운로드
    img_obj = s3.get_object(Bucket=bucket, Key=key)
    img = Image.open(img_obj['Body'])
    
    # 리사이즈 (예: 800px 폭)
    img.thumbnail((800, 800))
    buf = io.BytesIO()
    img.save(buf, format='JPEG', quality=85)
    buf.seek(0)
    
    # S3에 리사이즈 이미지 업로드
    s3.put_object(Bucket=bucket, Key=f"resized/{key}", Body=buf, ContentType='image/jpeg')

    return {"status": "이미지 리사이즈 성공"}

핵심 효과

  • 저장공간 절약

  • 서비스 속도 향상

  • 디자인 유지 & 사용자 경험 개선


3. 자동 보고서 생성 및 이메일 발송

매출, 트래픽 등 반복되는 보고 작성을 Lambda로 자동화하면 번거로운 수작업을 줄이고 빠르고 정확하게 결과를 공유할 수 있습니다.

실생활 비유 자동 커피머신이 아침마다 커피를 내려주듯, 반복적인 보고서 업무를 Lambda에게 맡길 수 있습니다.

적용 방법 & 핵심 파이썬 코드

  1. CloudWatch Events/EventBridge로 Lambda 실행 스케줄(예: 매일 오전 9시)

  2. Lambda가 필요한 데이터 수집

  3. CSV 등으로 생성, 이메일 발송(SNS/SES 활용) 또는 S3 저장

import boto3
import csv
import io

def lambda_handler(event, context):
    # 예시용: S3에 보고서 생성
    data = [ ["날짜", "매출"], ["2024-06-01", 50000], ["2024-06-02", 47000] ]
    buf = io.StringIO()
    writer = csv.writer(buf)
    writer.writerows(data)
    buf.seek(0)
    
    s3 = boto3.client('s3')
    s3.put_object(Bucket="your-report-bucket", Key="daily_report.csv", Body=buf.getvalue())
    
    return {"status": "보고서 S3 업로드 완료"}

핵심 효과

  • 수작업 제거

  • 오류 감소 및 신속한 데이터 공유

  • 효율적인 업무 관리


4. 미사용 EBS 볼륨 자동 정리

EC2를 삭제해도 연결됐던 EBS 볼륨이 남아있다면 불필요한 스토리지 비용이 발생합니다. Lambda가 오래 방치된 EBS 볼륨을 자동 탐색·삭제합니다.

실생활 예시 집 청소로봇처럼, 쓸모없이 남은 볼륨을 스스로 찾아 정리합니다.

적용 방법 & 핵심 파이썬 코드

  1. 정기적으로(Lambda 스케줄) 실행

  2. AWS API로 미사용 EBS 볼륨 조회

  3. 조건 맞으면 자동 삭제

import boto3

def lambda_handler(event, context):
    ec2 = boto3.client('ec2')
    # 미사용(available) EBS 볼륨 조회
    volumes = ec2.describe_volumes(Filters=[{'Name': 'status', 'Values': ['available']}])['Volumes']
    
    for vol in volumes:
        if (vol['CreateTime'].date() < (datetime.today().date() - timedelta(days=30))):  # 30일 이상 방치
            ec2.delete_volume(VolumeId=vol['VolumeId'])
    
    return {"deleted_volumes": [v['VolumeId'] for v in volumes]}

핵심 효과

  • 스토리지 비용 절감

  • 환경 쾌적화 및 관리 시간 감소


AWS Lambda로 시작하는 클라우드 자동화 전략

이런 사례들을 하나씩 적용해보면,

  • 운영 효율이 확연히 높아지고

  • 예상치 못한 비용 발생을 미연에 방지하며

  • 반복적 업무에서 벗어나 더 중요한 일에 집중할 수 있습니다.

핵심: Lambda는 클라우드 운영의 든든한 조력자! 반복적 작업은 Lambda에 맡기고, 여러분만의 창의적 업무에 에너지를 집중하세요.