inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

Airflow 마스터 클래스

Bash Operator & 외부 쉘파일 수행하기

Bash Operator & 외부 쉘파일 수행하기 강의 질문

175

cluelin

작성한 질문수 6

0

Bash Operator & 외부 쉘파일 수행하기

강좌에서 보여주신내용을 따라하던중 쉘스크립트를 파라미터없이 작성했는데

 

파라미터가 없는경우 airflow에서 위치를 못찾고

jinja2.exceptions.TemplateNotFound: /opt/airflow/plugins/shell/select.sh

 

에러를 발생시키는데

파라미터의 유무로 경로를 찾고/못찾고가 차이나는 원인이 무엇인지 궁금해서 질문드립니다.

 

python 데이터-엔지니어링 airflow

답변 2

0

김현진

안녕하세요 clulin 님!

Base operator를 사용할 때 bash_command 파라미터의 값이 .sh 로 끝나는 경우 스크립트 자체를 Jinja 템플릿으로 해석하려고 시도합니다.

그런데 조건이 있습니다. 쉘 파일을 dags 디렉토리 아래에 두어야 한다는 조건이 있습니다.

dags 아래 여러 디렉토리를 계층으로 두더라도 꼭 dags 디렉토리 아래에 쉘 파일이 있어야 인식이 가능합니다.

에러를 안나게 하는 방법은 2가지인데,

1) 쉘 파일을 dags 디렉토리 아래에 두고, bash_command 파라미터를 dags 아래 상대 경로로 작성해주세요.

예를 들어 dags/shells/select.sh 이렇게 두었다면 bash_command를 아래처럼 작성해보세요.

bash_command=shells/select.sh

이 방법은 select.sh 파일 안에 {{ data_inverval_end }} 와 같이 Template 변수가 작성되어 있을 때 적용할 수 있습니다.

 

2) bash_command 파라미터 작성시 띄어쓰기를 하나 포함해주는 방법이 있습니다.

그럼 .sh 로 끝나지 않고 띄어쓰기가 하나 있으므로 Jinja 템플릿으로 해석하려는 시도를 하지 않습니다.

쉘 파일 안에 Template 변수가 없고 단순히 그냥 실행만 하고자 하면 이 방법을 사용하면 됩니다.

 

이에 대한 설명은 Airflow 가이드 문서 참고해보세요 ^^

image.png

 

https://airflow.apache.org/docs/apache-airflow/stable/howto/operator/bash.html#jinja-template-not-found

 

답변이 되었을까요?

궁금한건 언제든 물어보세요 ^^

0

cluelin

상세한 답변감사드립니다!

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다. cluelin님.

jinja2.exceptions.TemplateNotFound 에러는 파이썬 스크립트에서 파일 또는 디렉토리를 찾지 못했을 때 발생하는 문제입니다. 이와 관련해서 몇 가지 확인해보셔야 할 사항을 안내드립니다.

  1. 디렉토리 및 파일 경로 확인: 지정된 경로 /opt/airflow/plugins/shell/select.sh에 실제로 파일이 존재하는지 확인하세요. 쉘 파일이 올바르게 위치에 있어야 합니다. WSL 또는 Docker 환경에서 경로가 올바르게 마운트되어 있는지 확인하세요.

  2. Mount 된 패스 확인: Airflow를 Docker에서 사용 중이라면, docker-compose.yaml 파일을 확인하여 볼륨 마운트가 제대로 설정되어 있는지 확인하셔야 합니다. 경로를 잘못 설정하면 컨테이너 내부에서 파일을 찾을 수 없습니다.

  3. BashOperator 설정 확인: BashOperator에서 bash_command 파라미터에 적힌 경로가 올바른지 확인해야 합니다. 경로에 오타가 있는 경우도 동일한 에러가 발생할 수 있습니다.

BashOperator가 경로를 찾지 못하는 문제가 일반적으로 경로 설정 오류에서 발생하므로 위의 사항들을 하나씩 점검하시면 도움이 될 것입니다.

관련해서 다음과 같은 질문들이 도움이 될 수 있습니다:
- Task 실행관련 질문입니다.
- bashoperator에 외부 쉘파일 수행하기

이 외에도 여러 명확한 사례가 있으니 참고하시길 바라며, 문제가 계속되신다면 현재 설정을 보다 자세히 알 수 있게 추가적인 정보를 제공하여 질문을 남겨주시면 도움이 될 것입니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

pykrx 회원제 전환으로 인한 실습 불가

0

114

2

수료증 발급

0

84

3

에러 발생 관련 질문드립니다.

0

83

2

vscode 작업화면에 오류가 발생하지 않습니다.

0

69

2

plugins 폴더 생성

0

76

2

WSL에서 git push 가 안되요 ㅠ

0

115

2

chatGPT&Airflow로 블로그 자동 포스팅하기 는 Deprecated 가 필요합니다.

0

67

2

github에 회원가입이 안되는데 원인이 뭔지 모르겠어요 ㅠ

0

738

2

설치중인데 venv를 꼭 써야할까요?

0

126

2

설치 버전 관련 질문입니다.

0

68

1

우분투 버전 다운받아야하는데 어떤걸로 설치해야할까요?

0

62

1

DAG 만들기 중 airflow 패키지 로드 에러

0

106

2

3.0에서도 수업노트가 성립하는지 확인 부탁드립니다!

0

95

3

task_id 사용법이 뭔가 바뀐 것 같습니다.

0

76

3

email operator 오류 관련

0

66

2

plugins 폴더 관련

0

100

2

bash operator 관련 문의입니다

0

78

3

스케쥴러 - DAG 파싱 부하 줄이는 과정 질문

0

79

2

Dags refresh 주기 관련 질문

0

125

2

wsl 관련 질문입니다.!

0

75

2

macOS에서 docker 설치

0

94

2

템플릿 변수에 대한 오류

0

61

2

custom_image 디렉토리 문의드립니다.

0

54

2

ETL 인터뷰 관련 문의

0

103

2