1. Email 오퍼레이터란?
- 이메일을 전송해주는 오퍼레이터로서 아래와 같은 형태를 가집니다.
email_t1 = EmailOperator(
task_id = "email_t1",
to = "hockey9322@naver.com",
subject = " Airflow 처리결과",
html_content = "이메일 내용입니다!<br/>"
)
- 여기서 to 는 누구에게 메일을 보낼것인지 정하는 란이고,
- subject는 메일제목을 뜻하며, 메일 내용은 html_content에 적으면 됩니다.
이메일 전송을 위해선 사전 작업 세팅이 필요한데요, 해당 작업은 구글 메일 서버를 사용하도록 하겠습니다.
2. 사전 작업 설정(Google)
- Gmail --> 설정 --> 모든 설정 보기 --> 전달 및 POP/IMAP --> IMAP 사용
- 구글 계정 관리 --> 보안 --> 2단계 인증 --> 앱 비밀번호 셋팅
- 앱 비밀번호는 반드시 어디다가 저장해야 합니다. 깃허브 토큰 처럼 어딘가에 보관해두세요!
2. 사전 작업 설정(Airflow)
- vi docker-compose.yaml 로 아래와 같은 내용을 추가해줍니다.
- Docker-compose.yaml 편집 (environment 항목에 추가)
AIRFLOW_SMTP_SMTP_HOST : "smtp.gmail.com"
AIRFLOW_SMTP_SMTP_USER : "{gmail계정}"
AIRFLOW_SMTP_SMTP_PASSWORD : "{앱비밀번호}"
AIRFLOW_SMTP_SMTP_PORT : "587"
AIRFLOW_SMTP_SMTP_MAIL_FORM : "{gmail계정}"
AIRFLOW__SMTP__SMTP_PASSWORD 부문에 아까 구글메일에서 받은 앱 비밀번호를 적으시면 됩니다.
이제 본격적으로 dag 파일을 작성해봅시다.
아래와 같이 말이죠.
from airflow import DAG
import pendulum
import datetime
from airflow.operators.email import EmailOperator
with DAG(
dag_id="dags_email_operator",
schedule="0 8 1 * *",
start_date=pendulum.datetime(2023, 8, 1, tz="UTC"),
catchup=False
) as dag:
send_email_task = EmailOperator(
task_id = 'send_email_task',
to = 'hockey9322@naver.com',
subject= 'Airflow 알루코딩 성공메일',
html_content='Airflow알루코딩 이메일 오퍼레이터 작업이 완료되었습니다!'
)
그럼 이제, 도커를 실행시켜서 airflow에서 한 번 확인해봅시다.
next_run이 이미 지난 날짜라면 수동으로 한 번 실행시켜주고 로그를 살펴보면 아래와 같습니다.
네이버 메일을 보면, 아래와 같이 성공적으로 메일이 갔음을 확인할 수 있습니다.
보낸 사람은 gmail 계정이자 도커 docker-compose.yaml 파일에 쓴 메일이고, 받는 사람의 메일은 dag 파일에 쓴 메일입니다.
정리하자면,
이메일을 보내기 위해선 두 가지 설정사항을 해줘야 하는데,
1) gmail에서 imap 사용을 체크한 후, 앱 비밀번호를 발급받은 후,
2) airflow의 다섯가지 변수를 적절하게 채우면서, 현재 세팅에서는 도커를 사용했기 때문에, docker-compose.yaml 파일을 편집하면 됩니다.
이상으로 이메일 오퍼레이터를 통해 이메일을 보내는 실습을 진행해봤습니다.
반응형
'컴퓨터 공부 > 💿 Airflow' 카테고리의 다른 글
[Airflow] 외부 파이썬 함수 수행하기 (2) | 2023.08.23 |
---|---|
[Airflow] Python operator 기본 (0) | 2023.08.20 |
[Airflow] Bash Operator & 외부 쉘 파일 수행하기 (2) | 2023.08.19 |
[Airflow] Task 연결하기 (0) | 2023.08.18 |
[Airflow] Cron 스케줄 이해하기 (0) | 2023.08.09 |