베하~ 반갑습니다!!
인사통의 BTC_김회장, 최총무입니다!!
오늘은 Airflow 환경을 이전한다고 가정하고 환경 이전을 해보겠습니다!!
실무에서 꽤 사용하는 내용이니 기억해주세요~
1. 수정 권한 확인
각자 User마다 가진 권한에 따라 Airflow Webserver상 확인 할 수 있는 카테고리가 다릅니다.
아마 데이터 엔지니어 역할을 하고 있다면 Admin 권한이 있어 Security나 Admin 등 중요한 항목까지 보이게 될텐데요!
다음과 같이 Security와 Admin이 보이는지 확인해주세요~
확인이 안된다면 Airflow CLI를 통해 아래 명령어로 권한을 추가할 수 있습니다!!
airflow users add-role -e {USER NAME} -r Admin
이제 모든 항목이 보인다면 함께 진행해보시죠!!
일반적으로 옮길 내용이 가장 많은 2가지 Connection 값과 Variable값을 토대로 설명드리겠습니다!
먼저 Variable의 경우 간단하게 이전이 가능합니다!
바로 Export 기능을 사용하는건데요?
전체 Vairable값을 Export 하여 json으로 저장한 후
Import Variables를 통해 해당 json 파일을 이전할 Webserver에 업로드해주시면 됩니다!!
간단하죠?
하지만 Connection 이전은 이렇게 쉽지 않습니다.
Connection의 경우 앞서 사용한 export 기능이 되지 않네요!
게다가 webserver상 나타낼 수 없는 연결값이 숨겨져 있기도 합니다!!
정확한 이관을 위해서는 내부 db에 직접 접속해서 값을 확인할 필요가 있습니다!!
Alchemy의 접속 방법에 대해서는 따로 정리한 포스팅이 있으니 참고하시죠~
접속까지는 다 되셨나요?
여기에서 Connection table에 들어가면 값들이 일부 암호화 처리된것을 확인할 수 있습니다!
이를 보기 위해서는 fernet key를 사용한 복호화 작업이 필요합니다!!
해당 Key 값은 Airflow Configuration에서 확인하실 수 있습니다!
해당 Key값을 통해 복호화를 진행해야 합니다.
저는 Python 환경에서 cryptography 라이브러리를 사용해서 복호화 하겠습니다.
혹시 해당 라이브러리가 Python환경에 없다면 설치해주세요~
import base64
from cryptography.fernet import Fernet
def decrypt_airflow_connection(encrypted_connection, fernet_key):
fernet = Fernet(fernet_key)
encrypted_connection_bytes = base64.urlsafe_b64decode(encrypted_connection)
return fernet.decrypt(encrypted_connection_bytes).decode()
# 예제 값을 사용하여 함수 호출
fernet_key = {"your_fernet_key_here"} # 실제 Fernet 키로 교체
encrypted_connection = {"your_encrypted_connection_here"} # 실제 암호화된 연결 문자열로 교체
# 함수 호출 및 결과 출력
decrypted_connection = decrypt_airflow_connection(encrypted_connection, fernet_key)
print(decrypted_connection)
저는 위와같이 코드를 작성해서 사용했습니다!!
fernet_key 부분에 해당 airflow의 fernet_key를, encrypted_connection에 해독해야 하는 문자열을 넣으면 됩니다!
이를통해 실제 값들을 확인했으니 새로운 Airflow 환경에 등록하면 되겠죠?
default로 생성되는 값들은 Composer 생성 시 자동으로 등록 되어있으니 생각보다 적을거에요!!
이상으로 오늘 실습을 마치겠습니다!!
날씨가 많이 추워지네요
이럴 때일수록 모두 감기 조심하시길 바래요~
그럼 다음번에도 더욱 유용한 정보를 알려드리러 오겠습니다!!
모두 베빠!!
'Database' 카테고리의 다른 글
Redis의 Node와 Shard (1) | 2024.01.05 |
---|---|
MySQL 일일 단위 백업 자동화 (0) | 2023.12.29 |
Python 클라이언트 라이브러리를 사용하여 Cloud Pub/Sub로 메시지 게시 (0) | 2023.12.15 |
Pub/Sub (0) | 2023.12.15 |
Parquet 데이터 수정하기 (2) | 2023.12.08 |
댓글