Docker 환경 Airflow의 SMTP 설정법

Holyday33·2024년 11월 1일
0

요약

  1. 컨테이너 접속: docker exec -it <container_name> /bin/bash 명령어를 통해 Airflow 컨테이너로 들어갑니다.
  2. 설정 파일 위치 확인: ~/airflow/airflow.cfg에서 SMTP 설정을 편집합니다.
  3. SMTP 설정 수정: [smtp] 섹션에 SMTP 서버 정보와 사용자 인증 정보를 입력합니다.
  4. 연결 테스트: Python 스크립트를 사용해 SMTP 연결을 테스트합니다.
  5. Airflow 재시작: 변경된 설정이 적용되도록 Airflow 서비스를 재시작합니다.

1. Docker 컨테이너 내부 접속

먼저 Airflow가 실행되는 Docker 컨테이너 내부로 접속합니다. 아래 명령어를 사용하여 컨테이너로 들어갑니다:

docker exec -it <container_name> /bin/bash

여기서 <container_name>은 실행 중인 Airflow 컨테이너 이름으로 대체하세요.

2. airflow.cfg 파일 위치 확인

컨테이너 내부에서 Airflow 설정 파일인 airflow.cfg 파일이 위치한 경로를 확인합니다. 기본적으로 이 파일은 ~/airflow/airflow.cfg에 위치해 있습니다.

ls ~/airflow/airflow.cfg

3. SMTP 설정 수정

airflow.cfg 파일을 편집하여 SMTP 설정을 추가하거나 수정합니다. 기본적으로 [smtp] 섹션을 수정해야 합니다. 편집을 위해 vinano 에디터를 사용할 수 있습니다:

nano ~/airflow/airflow.cfg

airflow.cfg[smtp] 섹션 예시

[smtp]
smtp_host = smtp.gmail.com            # SMTP 서버 주소 (예: Gmail SMTP)
smtp_starttls = True                  # TLS 사용 여부
smtp_ssl = False                      # SSL 사용 여부
smtp_port = 587                       # SMTP 서버 포트 (TLS는 587)
smtp_mail_from = your_email@gmail.com # 이메일 발신 주소
smtp_user = your_email@gmail.com      # SMTP 사용자 이름
smtp_password = your_gmail_app_password # SMTP 비밀번호 (앱 비밀번호 사용 권장)

참고: Gmail을 사용할 경우, 일반 비밀번호 대신 앱 비밀번호를 생성하여 사용해야 합니다. 앱 비밀번호 생성 가이드를 참고하세요.

4. 연결 테스트

SMTP 설정이 올바른지 확인하기 위해 SMTP 서버 연결을 테스트하는 Python 스크립트를 사용할 수 있습니다. 아래 스크립트를 이용해 SMTP 서버와의 연결 여부를 확인합니다.

import smtplib

smtp_host = 'smtp.gmail.com'
smtp_port = 587
smtp_user = 'your_email@gmail.com'
smtp_password = 'your_gmail_app_password'

try:
    server = smtplib.SMTP(smtp_host, smtp_port, timeout=10)
    server.ehlo()
    server.starttls()
    server.ehlo()
    server.login(smtp_user, smtp_password)
    print("SMTP 연결 성공")
    server.quit()
except Exception as e:
    print(f"SMTP 연결 실패: {e}")

위 스크립트를 smtp_test.py로 저장한 후 컨테이너 내부에서 실행하여 SMTP 연결 성공 여부를 확인합니다:

python smtp_test.py

5. Airflow 재시작

SMTP 설정을 수정한 후 Airflow 서비스를 재시작하여 변경 사항이 적용되도록 합니다.

airflow scheduler &  # Scheduler 재시작
airflow webserver -p 8080 &  # Web Server 재시작
profile
Why so serious?

0개의 댓글

관련 채용 정보