AWS EC2 인스턴스에서 이메일 발송 기능을 구현하기 위해 AWS SES를 사용하기로 했다.
Django-SES라는 패키지가 있었지만, Django-SES가 boto3에 이미 의존성이 있는 패키지이고, boto3 라이브러리에서도 충분히 사용가능하기 때문에 Django-SES는 사용하지 않았다.
SES 설정
이메일 발송을 위해 SES 콘솔에서 Create identity를 눌러 발송에 사용할 이메일 주소나 메일 도메인을 생성한다.
나는 이메일 주소를 선택하였는데, 생성한 이메일 주소로 인증 메일이 수신된다.
그리고 그 메일을 확인하여 인증을 마친다.
인증을 마치고 SES 콘솔에서 Verified Identies를 선택하면 제대로 인증이 되었는지 확인할 수 있다.
boto3 라이브러리 설치
SES를 사용하기 위해 가상환경에 boto3를 설치한다.
$ pip install boto3
메일 발송 로직 설계
- boto3 객체를 호출한다.
이때 ses, region_name을 파라미터로 넘긴다.
./aws/config 경로에 region이 세팅되어있을 경우, 파라미터를 넣지 않아도 된다.
호출한 객체에 send_email method에 각각의 파라미터들을 넣는다.
import boto3
def send_email():
client = boto3.client('ses', region_name='ap-northeast-2')
return client.send_email(
Destination={
'ToAddresses': [
"받을 사람의 메일 주소",
],
},
Message={
'Body': {
'Text': {
'Charset': "UTF-8",
'Data': "안녕하세요",
},
},
'Subject': {
'Charset': "UTF-8",
'Data': "테스트입니다.",
},
},
Source=:발송할 메일 주소 (SES에 인증을 받아야함),
)
EC2 인스턴스에 SES 역할 설정
EC2인스턴스에서 SES를 사용하려면, 인스턴스에 SES 엑세스 정책이 적용된 역할이 부여되어야한다.
역할 생성
- IAM 접속 > 역할 만들기 > EC2 선택
- SESFullAccess 정책 선택
- 역할 이름을 입력 후 생성
EC2 인스턴스에 역할 적용
- EC2 인스턴스 선택 > 작업 > 보안 > IAM 역할 수정
- IAM 역할 부여 후 저장
이제 인스턴스에 해당 코드를 배포하면, 정상적으로 SES 서비스를 사용하여 이메일을 발송 할 수 있다.
'개발' 카테고리의 다른 글
EC2 인스턴스에 AWS Cloud watch Agent 설치하기 (0) | 2022.10.14 |
---|---|
AWS OpenSearch mapper_parsing_exception Trouble shooting (0) | 2022.10.12 |
AWS OpenSearch 시작하기 (feat.node.js) (0) | 2022.10.11 |
Airflow에 BigQuery 연동하기 (0) | 2022.10.07 |
Django에 Zappa 세팅하기 (0) | 2022.10.05 |