Airflow는 엔지니어들이 셋업하지만 데이터를 주로 사용하는 사람들은 비개발자(데이터 분석, 영업팀, 마케팅팀 등)인 경우가 많다. 데이터를 개발자, 비개발자는 모두 구글 스프레드시트를 쉽게 사용하고 이 시트에 데이터를 많이 저장하고 관리하기 때문에 이 시트를 Airflow와 연동하는 방법에 대해서 알아보자.
Airflow에 구글 스프레드시트를 연동하기 위해서는 세팅이 필요하다.
프로젝트 선택 버튼을 누른다. 새로 뜨는 창에서 새 프로젝트를 클릭한다.
만들기 버튼을 클릭한다. 위치는 현재 무직이라 아무것도 없으니 선택하지 않아도 된다!
Google Sheets API 활성화할 수 있는 화면으로 넘어온다. 사용 버튼을 눌러 활성화 시킨다.
사용자 인증 정보 탭에 들어가서 사용자 인증 정보 만들기를 열고 서비스 계정을 클릭해 들어간다.
서비스 계정 이름에 원하는 이름을 작성하면 서비스 계정 ID가 자동으로 생성되고 그 아래에 이메일 주소(빨간 네모)가 생긴다. 이 주소를 사용하는 것!!! 만들고 계속하기 버튼을 클릭해서 다음 단계로 넘어간다.
편집자를 주고 계속 버튼을 눌러 다음 단계로 넘어간다.
완료를 눌러 서비스 계정을 생성한다.
사용자 인증 정보 탭에 내가 만든 서비스 계정이 있는 것을 확인할 수 있다. 이메일(빨간 네모)을 클릭해서 상세 페이지로 이동한다.
키 탭으로 넘어가 키 추가 버튼을 누르고 새 키 만들기를 눌러 키를 생성한다.
JSON을 선택하고 만들기 버튼을 누른다. 자동으로 JSON 파일이 저장되고 이 파일을 DAG에 연결해야하므로 이 파일을 잘 저장하고 있어야 한다.

여기까지 하면 서비스 계정을 만들고 Airflow에 연결하는 작업까지 끝난 것이다.
이메일은 1)-9 과정에서 만났던 이메일 주소를 copy해서 사용해도 되고 다운로드받은 JSON 파일에서 client_email 키의 값을 copy해서 사용해도 된다.
공유 버틀을 클릭한다.
뷰어, 수정까지 할 것이라면 편집자로 세팅한다.이메일 알림 보내기 체크를 해제했지만 사실 아무 상관 없다.
이제 설정한 구글 시트는 아까 JSON 파일 내용을 Variables로 저장한 Airflow에서 사용할 수 있다.
Airflow DAG에서 사용하기 위해 설정을 해줘야한다.
JSON 파일의 내용은 기밀사항이기 때문에 Docker Image안에 저장해서 옮길 수 없기 때문에 Variables를 사용하여 해당 구글 시트에 접속할 때마다 JSON 파일을 생성하여 사용한다.
from airflow.models import Variable
from oauth2client.service_account import ServiceAccountCredentials
import gspread
# data를 저장하고 불러올 경로
data_dir = Variable.get("DATA_DIR")
# 구글시트 인증 json 파일을 만들기 위한 경로
scope = ['https://spreadsheets.google.com/feeds', 'https://www.googleapis.com/auth/drive']
gs_json_file_path = data_dir + 'google-sheet.json'
# JSON 생성
write_variable_to_local_file('google_sheet_access_token', gs_json_file_path)
# JSON 파일을 사용하여 구글 시트에 접속 인증
credentials = ServiceAccountCredentials.from_json_keyfile_name(gs_json_file_path, scope)
gc = gspread.authorize(credentials)
위의 3개의 과정을 거쳐서 구글 시트와 airflow dag를 연동해서 사용할 수 있도록 세팅을 했다.
Dag의 내용은 자신이 원하는 대로 python operator와 helper 함수를 작성하여 사용하면 된다.
예시 처럼 원하는 방식을 만들어서 그대로 구현하여 사용하면 완료!