Docker Compose로 Airflow 환경을 구성한 뒤 FileSensor를 실행했는데,
파일이 존재하지도 않았는데 기다리기는커녕 즉시 실패하는 문제가 발생했다.
처음에는
“파일 경로가 잘못됐나?”,
“컨테이너 안에서 파일이 안 보이나?”
같은 의심을 했지만, 실제 원인은 파일이 아니라 파일시스템 설정이었다.
1. 발생한 에러 핵심
로그의 핵심 메시지는 아래였다.
The conn_id 'fs_default' isn't defined
이 메시지는
**“파일을 못 찾는다”**가 아니라
**“어디서 파일을 찾아야 할지 모르겠다”**는 의미였다.
2. 왜 이런 문제가 생겼나
Airflow에서 FileSensor는 단순히 경로만 보고 파일을 확인하지 않는다.
- filepath → 어디를 볼지
- fs_conn_id → 어떤 파일시스템을 통해 볼지
즉, Airflow는 먼저
“이 경로는 어떤 파일시스템에 속해 있지?”
를 알아야 한다.
로컬 파일시스템조차도 Airflow 입장에서는
명시적으로 정의된 파일시스템 중 하나일 뿐이다.
그런데 기본 파일시스템으로 쓰이는
fs_default Connection이 등록되어 있지 않았기 때문에
Sensor는 파일을 확인하기도 전에 실패했다.
3. 해결 방법: 로컬 파일시스템을 Connection으로 명시
Airflow UI에서 다음 Connection을 추가했다.
- Conn Id: fs_default
- Conn Type: File (path)
- Extra
{
"path": "/"
}
이 설정의 의미는 단순하다.
“로컬 파일시스템을 사용하고,
루트(/)부터 경로를 해석하겠다”
설정 후 다시 DAG를 실행하자
FileSensor는 정상적으로 대기 상태에 들어갔고,
파일 생성 시 성공으로 전환되었다.
4. 이 트러블슈팅에서 얻은 핵심 교훈
FileSensor는 파일 존재 여부만 보는 도구다
하지만 그 전에 어떤 파일시스템을 볼지가 먼저 정의되어야 한다
Airflow는 경로를 추측하지 않고, Connection을 기준으로만 동작한다
5. 정리하면
FileSensor가 실패했다면 “파일이 있냐”보다
“Airflow가 볼 파일시스템을 알고 있냐”를 먼저 확인하자.
'컨테이너·워크플로우 자동화 > Airflow로 워크플로우 자동화하기' 카테고리의 다른 글
| [트러블슈팅] Airflow에서 pipeline 패키지 인식하지 못했던 이유와 해결 과정 (0) | 2026.01.23 |
|---|---|
| [트러블슈팅] BranchOperator 이후 Task가 Skipped 되는 이유와 trigger_rule (1) | 2026.01.22 |
| [트러블슈팅] Docker Compose로 Airflow가 안 뜰 때: health: starting 무한 루프와 PermissionError (0) | 2026.01.21 |
| Airflow 세계관의 출발점 (Airflow Component) (0) | 2026.01.21 |
| 데이터 처리가 반복되기 시작했을 때, Airflow가 등장한 이유 (0) | 2026.01.21 |