EC2 내 가상환경에서 진행하고자 몇 가지 설정을 해주겠다.
$ sudo apt-get update
$ sudo apt-get install python3-virtualenv
$ virtualenv airflow
$ cd airflow
$ source bin/activate # 가상환경 활성화
airflow를 설치하고 경로 설정을 진행해준다.
$ pip install apache-airflow
$ export AIRFLOW_HOME = ~/airflow
$ echo $AIRFLOW_HOME
airflow db를 초기화해준다.
$ airflow db init
airflow를 관리할 사용자 계정을 만들어준다. 아래 명령을 입력하면 비밀번호 설정을 해줘야 하는데, 이 때 입력한 비밀번호를 잊지 않고 기억해두도록 한다.
airflow users create \
--username admin \
--firstname {firstname} \
--lastname {lastname} \
--role Admin \
--email {email}
airflow web ui를 8080 포트로 띄울 예정이다. 따라서 웹서버를 실행시키기 전에 8080 포트를 사용 가능하도록 설정해줘야 한다.
'인스턴스'
→ '보안'
→ '인바운드 규칙'
→ '보안 그룹'
→ '인바운드 규칙'
→ '인바운드 규칙 편집'
→ '규칙 추가'
위와 같이 설정해준 뒤, 규칙 저장을 누르고 나온다.
airflow webserver --port 8080
url에 {퍼블릭 IPv4 DNS}:8080 을 입력하고 들어가면 아래와 같은 화면이 나온다.
이전에 설정해준 username과 password를 입력해 로그인한다.
airflow.cfg 파일의 dags_folder 변수에 DAG들이 저장되는 디렉토리를 지정할 수 있다. 기본값은 위와 같이 /home/ubuntu/airflow/dags이다. 처음에는 dags 디렉토리가 없어서 mkdir로 만들어줘야 한다.
미리 작성해둔 크롤링 dag 파일을 /home/ubuntu/airflow/dags 디렉토리에 넣고 airflow dags list
로 dag 상태를 확인해본다.
DAG이 너무 많다... 기본 예제로 주어지는 dag들을 안보이게 지워주겠다.
다시 dag 상태를 확인해보면 내가 dags 디렉토리에 올려둔 파일만 dag list에 올라와있는 것을 확인할 수 있다.
DAG 파일을 동기화하고 관리하는 작업은 scheduler가 담당하고 있다. 방금 올린 DAG을 활성화시키기 위해 scheduler를 활성화시켜준다.
airflow scheduler
web ui를 확인해보면 dags 디렉토리에 올려둔 dag이 활성화되어 있다.
dag을 실행시켜준다.
실행시킨 뒤 조금만 기다리면 위 그림의 가장 우측 부분처럼 task가 전부 정상적으로 완료된 것을 확인할 수 있다. 앞 부분은 시행착오 ㅎ ㅎ🫡
dag 구성에 csv 파일로 저장 및 S3 연결하는 작업을 넣어줘서 aws S3 서비스로 들어가보면 다음과 같이 추출한 정보들이 csv 파일로 잘 저장된 것을 확인할 수 있다.
dag 구성과 S3 연결은 차차 다음 게시글에서 다뤄보겠다..