Email Operator를 이용해 Task 실행 시 메일을 자동으로 전송하는 것을 해 보았다.
1. Gmail 기본 설정하기 (IMAP 설정)
먼저, 아래 순서대로 들어가 준다.
Gmail 접속 >> 설정 >> 모든 설정보기 >> 전달 및 POP/IMAP
그 후, IMAP 사용 안함을 사용함으로 바꿔주면 된다. 아래 사진을 참고 하자
2. Gmail 앱 비밀번호 불러오기
아래와 같은 경로로 이동해준다.
Gmail 계정 -> 보안 -> 2단계 인증 -> 앱 비밀번호 생성
아래와 같은 화면이 나오면 잘 진행이 된거다. 저 앱 비밀전호는 한번 뜨면 다시는 볼 수 없으니 반드시 어딘가에 잘 보관해야 한다.
3. Docker-compose.yaml 파일 수정하기
vi를 통해 yaml 파일을 보면 아래처럼 environment 부분에다가 아래 코드를 추가 해주면 된다.
해당 코드를 enviroment 아래다가 본인의 정보에 맞추어서 넣어주면 완성이다.
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_FROM: '{본인의 Gmail}'
4. dag 작성하기
나는 아래와 같이 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, 3, 1, tz="Asia/Seoul"),
catchup=False
) as dag:
send_email_task = EmailOperator(
task_id= 'send_email_task',
to='송신하고자하는 이메일',
subject="작업 진행 현황 공지",
html_content="Airflow 작업을 완료했습니다."
)
task 가 실행되면 subject 가 제목 html_content가 본문으로 to에 적힌 주소로 메일이 가게 된다.
5. dag 실행 후 확인하기
airflow task가 제대로 돌아갔으면 이처럼 메일이 성공적으로 오게 된다.