본문 바로가기
App Programming/Apache Airflow

[Apache Airflow] Email 오퍼레이터

by goatlab 2024. 6. 17.
728x90
반응형
SMALL

Email 오퍼레이터

 

Airflow에서 기본 제공하는 오퍼레이터 중 하나이며, Email 전송할 수 있는 오퍼레이터이다. 기존 airflow 컨테이너를 종료한다.

 

ubuntu~$cd airflow
ubuntu~$sudo docker compose down

 

구 컨테이너의 restart policy 변경 후 종료한다.

 

ubuntu~$sudo docker update --restart=no $(sudo docker ps -a -q)
ubuntu~$sudo docker stop $(sudo docker ps -a -q)

 

새 컨테이너를 시작한다.

 

ubuntu~$sudo docker compose up

 

구글 계정 설정

 

Gmail 계정 내 설정하기에서 G-mail → 설정 → 모든 설정보기 → 전달 및 POP/IMAP → IMAP 사용으로 설정한다.

 

 

그 다음, 구글 계정 관리 → 검색 → 앱 비밀번호를 설정한다.

 

 

docker-compose.yaml

 

environment 항목에 다음 환경 변수를 추가한다.

 

 AIRFLOW__SMTP__SMTP_HOST: 'smtp.gmail.com'
 AIRFLOW__SMTP__SMTP_USER: '{gmail계정}'
 AIRFLOW__SMTP__SMTP_PASSWORD: '##SMTP_PASSWORD##'
 AIRFLOW__SMTP__SMTP_PORT: 587
 AIRFLOW__SMTP__SMTP_MAIL_FROM: '{gmail계정}'

 

그 다음, git commit & push을 수행한다. 서버에서 git pull을 deploy.sh 파일로 진행하기 위해 다음과 같이 작성한다.

 

ubuntu~$cd /home/ubuntu
ubuntu~$vi deploy.sh
AIRFLOW_HOME=/home/ubuntu/yeardream_airflow
cd $AIRFLOW_HOME
git pull
sed -i 's/##SMTP_PASSWORD##/{앱 비밀번호 16자리}/g' $AIRFLOW_HOME/docker-compose.yaml
ubuntu~$chmod +x deploy.sh
ubuntu~$./deploy.sh

 

dags_email_operator.py

 

이메일 전송을 위한 DAG를 다음과 같이 작성한다.

 

from airflow import DAG
import pendulum
from airflow.operators.email import EmailOperator

with DAG(
    dag_id="dags_email_operator",
    schedule="0 8 1 * *",
    start_date=pendulum.datetime(2024, 6, 1, tz="Asia/Seoul"),
    catchup=False
) as dag:
    send_email_task = EmailOperator(
        task_id='send_email_task',
        to='네이버아이디@naver.com',
        subject='Airflow 성공메일',
        html_content='Airflow 작업이 완료되었습니다'
    )

728x90
반응형
LIST