
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 연결은 차차 다음 게시글에서 다뤄보겠다..