-
Airflow 이용해서 Slack Bot 만들기 - 기초etc. 2020. 12. 17. 13:24
airflow에 있는 SlackAPIPostOperator를 활용해서 slack에 메시지를 보내 보려고 합니다.
먼저 슬랙에서 app을 만들어 줍니다.
다음으로 incoming webhooks를 활성화합니다.
슬랙 채널에 앱을 연동한 뒤 airflow dag를 작성합니다.
from datetime import datetime, timedelta import airflow from airflow import DAG from airflow.operators.slack_operator import SlackAPIPostOperator default_args = { 'owner': 'rami', 'depends_on_past': False, 'start_date': datetime(2020, 12, 17, 10, 0) } dag = DAG( 'test_slack_0.0.1', default_args=default_args, schedule_interval='@once', ) t1 = SlackAPIPostOperator( task_id='send_slack', token='xoxb-', # Bot User OAuth Access Token channel='#general', username='Airflow', text='Hi. I am from Airflow! \n', dag = dag )
그런데 처음 연동을 했을 때 이런 에러 메시지가 뜹니다.
airflow.exceptions.AirflowException: Slack API call failed (invalid_auth)
이유를 살펴 보니 토큰 부분에 웹훅 주소 뒷부분이 아닌 슬랙 앱 메뉴에서
install App -> Bot User OAuth Access Token을 활용해야 합니다.
다시 돌려 보니 새로운 에러가 발생했습니다.
airflow.exceptions.AirflowException: Slack API call failed (missing_scope)
이 에러는 슬랙 봇에 충분한 권한이 주어지지 않았다는 의미입니다.
다시 슬랙 앱 설정에서 아래 메뉴를 선택하고 하단을 보면 Scops를 추가해줄 수 있습니다.
메시지를 보내는 봇이기 때문에 chat:write 권한만 추가해 줬습니다.
다음으로 메시지를 받을 슬랙 채널에 봇을 초대하고 다시 airflow dag를 실행하면 메시지가 잘 들어옵니다.
'etc.' 카테고리의 다른 글
Synology Docker 기반으로 Hadoop 설치하기 (0) 2020.12.20 Ubuntu에서 bash: ll: command not found 에러 해결 방법 (0) 2020.12.20 Airflow Dag 관리를 위한 Jupyter Lab 설치하기 (0) 2020.12.17 Airflow Macro PythonOperator에 적용하기 (0) 2020.12.17 Synology NAS - Docker Airflow 설치 (0) 2020.12.15