우선 Airflow에 BigQuery 같은 3rd Party tool을 연동하려면, Airflow의 Providers packages를 설치해야한다. 아래는 지원하고 있는 Provider list이다.
그런데 애초에 Airflow를 설치할 때, 이런 Providers를 같이 설치하는 명령어가 있다.
- 진작 이걸 쓸 걸 그랬다..... 너무 queck start만 보지말고, 공식 문서를 꼼꼼히 보자
AIRFLOW_VERSION=2.1.2
PYTHON_VERSION="$(python --version | cut -d " " -f 2 | cut -d "." -f 1-2)"
CONSTRAINT_URL="<https://raw.githubusercontent.com/apache/airflow/constraints-${AIRFLOW_VERSION}/constraints-${PYTHON_VERSION}.txt>"
pip install "apache-airflow[async,postgres,google]==${AIRFLOW_VERSION}" --constraint "${CONSTRAINT_URL}"
apache-airflow-providers-google 설치
pip install apache-airflow-providers-google
Google Cloud Connection
Airflow에 Google Cloud를 연동하는 것은 총 세가지 방법이 있는데,
1. App Credential을 사용하거나,
2. 해당 Google Cloud 계정의 JSON 키파일의 경로를 Keyfile Path 에 입력하거나,
3. 해당 Google Cloud 계정의 JSON 키파일의 내용을 Keyfile JSON 에 입력 → 내가 선택
하나의 connection에는 하나의 방법만 선택해야한다.
이중에서 내가 선택한 것은 3번인데, 현재 배포 방식이 수동 배포이다보니 Github repository에 JSON keyfile을 그대로 github에 올리기엔 보안상 안전하지 않다고 판단했다.
BigQuery에서 JSON 키파일 받기
- API 및 서비스 > 사용자 인증 정보 > + 서비스 계정 만들기
- 서비스 계정 이름과 권한 부여하기
- BigQuery만 할 것이기 때문에, BigQuery Admin 권한만 줬다.
- 완료 후 JSON 키파일 다운로드
발급받은 서비스 계정 확인하기
BigQuery에서도 IAM을 통해 사용자에게 권한을 부여한다.
- IAM 및 관리자 > IAM
google_cloud_default setting
- Airflow admin 에서 > Connections > google_cloud_default 로 진입
- google_cloud_default 가 default니 편의상 여기에 세팅한다.
- All hooks and operators related to Google Cloud use google_cloud_default by default.
- Edit Connection 화면에서 필드 채우고 저장
- 저장 이후, Keyfile JSON 는 보안을 위해 안쓴 것처럼 나온다. 하지만 테이블에는 있다. (connction 테이블에서 extra로 확인 가능)
- Scopes를 저장할 때 고민 많이했는데, admin 권한이니 내가 가진 JSON 키파일 BigQuery관련 Admin 권한만 있기 때문에 https://www.googleapis.com/auth/bigquery 만 줬다.
'개발' 카테고리의 다른 글
EC2 인스턴스에 AWS Cloud watch Agent 설치하기 (0) | 2022.10.14 |
---|---|
AWS OpenSearch mapper_parsing_exception Trouble shooting (0) | 2022.10.12 |
AWS OpenSearch 시작하기 (feat.node.js) (0) | 2022.10.11 |
Django에서 AWS SES를 활용한 이메일 보내기 (0) | 2022.10.06 |
Django에 Zappa 세팅하기 (0) | 2022.10.05 |