728x90

빅데이터(BigData)/Airflow 14

airflow에서 f-string과 jinja를 같이 사용하는 방법

airflow에서 jinja를 이용해서 미리 정의된 상수를 사용하려면 {{ds}}와 같이 앞 뒤에 중괄호 두개를 붙입니다. 문자열에서 이 값을 사용하려면 아래와 같습니다. str = "abc {{ds}}" 문제는 f-string에서는 위와 같이 사용하면 안됩니다. 이 때는 아래와 같이 중괄로를 4개 넣는 방법을 사용하면 됩니다. abc = "abc" str = f"abc {{{{ds}}}} {abc}"

airflow에서 SqlToSlackOperator로 메시지 보낼 때 데이터프레임 양식 변경

sql을 실행한 결과인 데이터프레임을 slack으로 발송하면 보기가 좋지 않습니다. 이때 할 수 있는 방법은 두가지가 있습니다. 첫 번째 방법은 tabulate를 사용하는 방법입니다. slack_message="message: {{ ds }}, ```{{ results_df | tabulate(tablefmt='fancy_grid', headers='keys', showindex=False) }}```" 아래와 같이 메시지를 보내면 깔끔한 표 형식으로 결과를 볼 수 있습니다. 하지만 한글 데이터 때문에 표가 밀려서 보입니다. 두 번째 방법은 아래와 같이 데이터 프레임의 각 값을 선택할 수 있습니다. slack_message="""기준일자: {{ ds }} ``` 신규소셜 : {{ results_df.il..

airflow UI에서 session timeout 설정하기

airflow.cfg 파일에서 아래 내용을 추가하면 됩니다. session_lifetime_minutes = 세션 분 session_lifetime_minutes New in version 1.10.13. The UI cookie lifetime in minutes. User will be logged out from UI after session_lifetime_minutes of non-activity Type integer Default 43200 Environment Variable AIRFLOW__WEBSERVER__SESSION_LIFETIME_MINUTES 더 많은 옵션은 아래 페이지를 확인하세요 https://airflow.apache.org/docs/apache-airflow/stable..

airflow UI에 사용자 비밀번호 검증 기능 추가하기 1편

airflow 2.x가 되면서 사용자 계정과 권한 기능이 추가됐습니다. 그래서 사용자 그룹에 따라서 특정 DAG에 대한 접근 권한을 할당할 수 있습니다. 한가지 아쉬운 점은 사용자 비밀번호에 대한 추가 정책을 관리할 수가 없습니다 예를들어 사용자 비밀번호 등록 시 최소 조건을 지정하거나, 90일이 지나면 비밀번호를 강제 변경하도록 만드는 것이 있습니다. 일반적으로는 이러한 기능이 없어도 큰 문제는 없지만 isms 심사를 위해서는 이러한 기능들이 필요합니다. 이에 따라서 비밀번호 등록 규칙을 지정하고 비밀번호 사용 만료 기간을 할당하는 방법을 작성해 보려고 합니다. 먼저 비밀번호 등록 규칙에 대해서 설명하겠습니다. 요구사항은 아래와 같습니다. 비밀번호는 8자 이상이여야 하고, 대문자, 소문자, 숫자, 특수..

airflow UI에 SSL 인증서를 적용하여 http를 https로 변경하기 2편

airflow UI에 SSL 인증서를 적용하여 http를 https로 변경하기 1편 오랜만에 데이터 엔지니어링 관련(?) 글을 쓰게 됐습니다. ISMS 심사를 위해서 airflow에 3가지 사항을 적용해야 합니다. SSL 인증서 적용 비밀번호 설정 검증 로직 적용(영문,숫자,특수문자 포함 및 8 leebaro.tistory.com 위의 지난 편에 이어서 airflow에서 https를 적용하는 방법에 대해서 적어보겠습니다. 순서는 아래와 같다고 했었습니다. SSL 인증서 확보 인증서를 airflow 서버로 복사 airflow ui 접속을 위한 도메인 지정 DNS에서 도메인 등록 docker-compose.yml 파일 수정 airflow 컨테이너 재생성 airflow UI 접속 테스트 SSL 인증서 확보 이..

airflow UI에 SSL 인증서를 적용하여 http를 https로 변경하기 1편

오랜만에 데이터 엔지니어링 관련(?) 글을 쓰게 됐습니다. ISMS 심사를 위해서 airflow에 3가지 사항을 적용해야 합니다. SSL 인증서 적용 비밀번호 설정 검증 로직 적용(영문,숫자,특수문자 포함 및 8자 이상) 90일 후 비밀번호 변경 로직 적용 각 사항을들 진행했던 내용을 기억하기 위해서 기록하려고 합니다. docker-compose를 사용해서 도커 컨테이너에서 실행하는 airflow인 경우에 대해서 정리해봤습니다. SSL 인증서를 적용하기 위한 단계는 아래와 같습니다. SSL 인증서 확보 인증서를 airflow 서버로 복사 airflow ui 접속을 위한 도메인 지정 DNS에서 도메인 등록 docker-compose.yml 파일 수정 airflow 컨테이너 재생성 airflow UI 접속 ..

airflow에서 log 디렉토리 변경하기

airflow의 로그 파일이 적재되는 기본 경로는 다음와 같다. {AIRFLOW_HOME}/logs/ 만약 로그 파일을 다른 곳에 적재하고 싶다면 아래와 같은 작업을 해야 한다. 1. vi airflow.cfg 2. base_log_folder, child_process_log_directory 두개의 경로를 변경하기 3. airflow 재실행하기 - 필자는 재실행했지만 재실행 안해도 적용이 되는지는 확인해보지 못했다. https://airflow.apache.org/docs/apache-airflow/stable/configurations-ref.html#base-log-folder https://airflow.apache.org/docs/apache-airflow/stable/configuration..

특정 이름의 파일을 airflow dag에서 제외하기

airflow dag 파일을 jupyter notebook으로 조회를 하면 checkpoint 파일이 생성되고 airflow admin의 dag 리스트에서 조회되는 것을 확인할 수 있다. 이러한 파일들은 .ipynb_checkpoints 디렉토리 안에 존재한다. 이 파일들을 dag 목록에서 보여주지 않으려면 아래와 같이 실행하면 된다. 1. dags 디렉토리에 .airflowignore 파일을 생성한다. 2. .airflowignore 파일에 .ipynb_checkpoints를 입력한다. 이 것은 .ipynb_checkpoints 디렉토리 안에 있는 파일들은 모두 dag에서 보여주지 않는다는 의미다. 참고 https://stackoverflow.com/questions/53660558/airflow-da..

728x90