파이썬과 AWS SES를 이용한 서버리스 이메일 발송 시스템

서버리스 아키텍처는 최근 많은 기업들이 채택하고 있는 방식으로, 관리 필요 없는 환경에서 애플리케이션 개발과 운영이 가능합니다. 이 중에서도 이메일 발송은 많은 웹 애플리케이션에서 필수적인 기능입니다.

본 포스트에서는 파이썬과 AWS (Amazon Web Services) SES (Simple Email Service)를 이용하여 서버리스 아키텍처에서 이메일 발송 시스템을 구축하는 방법을 알아보겠습니다.

1. AWS SES 설정

먼저, AWS 콘솔로 가서 SES 서비스를 활성화해야 합니다. SES는 이메일 발송을 쉽게 구현할 수 있도록 도와주는 매우 간단하고 유연한 서비스입니다. SES 서비스를 활성화하면 이메일 발송에 필요한 SMTP 자격 증명이 제공됩니다.

2. 파이썬 코드 작성

이제 파이썬으로 이메일 발송을 위한 코드를 작성해보겠습니다. 다음은 파이썬으로 AWS SES를 사용하여 이메일을 발송하는 간단한 예제 코드입니다.

import boto3

def send_email(sender, recipient, subject, body):
    client = boto3.client('ses')
    
    response = client.send_email(
        Source=sender,
        Destination={'ToAddresses': [recipient]},
        Message={
            'Subject': {'Data': subject},
            'Body': {'Text': {'Data': body}}
        }
    )
    
    return response['MessageId']

# 예제 사용법
sender = "sender@example.com"
recipient = "recipient@example.com"
subject = "Hello from Amazon SES"
body = "Hello, this is a test email from Amazon SES."

message_id = send_email(sender, recipient, subject, body)
print(f"Email sent! Message ID: {message_id}")

위 코드에서 sender, recipient, subject, body 변수를 원하는 값으로 설정한 후 실행하면 해당 이메일이 발송됩니다.

3. AWS Lambda와 API Gateway를 이용한 서버리스 배포

이제 작성한 코드를 AWS Lambda와 API Gateway를 통해 서버리스로 배포해보겠습니다. AWS Lambda는 이벤트에 따라 코드를 실행하는 서버리스 컴퓨팅 서비스이며, API Gateway는 외부로 노출되는 RESTful API를 생성하는 서비스입니다.

AWS Lambda 함수를 생성하고, 아래와 같이 파이썬 코드를 업로드할 수 있습니다.

import boto3

def send_email_handler(event, context):
    sender = "sender@example.com"
    recipient = "recipient@example.com"
    subject = "Hello from Amazon SES"
    body = "Hello, this is a test email from Amazon SES."

    message_id = send_email(sender, recipient, subject, body)
    return {
        'statusCode': 200,
        'body': f"Email sent! Message ID: {message_id}"
    }

그리고 AWS API Gateway를 생성하여 이 Lambda 함수와 연결합니다. 이제 API Gateway의 엔드포인트를 통해 이메일을 발송할 수 있게 되었습니다.

결론

이렇게 파이썬과 AWS SES를 이용하여 서버리스 아키텍처에서 간단하게 이메일 발송 시스템을 구축할 수 있습니다. AWS의 다양한 서비스를 활용하여 더 복잡한 기능을 추가할 수도 있습니다. 서버리스 아키텍처와 AWS SES의 조합은 확장성과 유연성을 제공하여 이메일 발송에 대한 요구사항을 쉽게 충족시킬 수 있습니다.

#Python #AWS #SES #서버리스 #이메일