Как заставить DAG Airflow читать из таблицы Google, используя сохраненное соединение - PullRequest
0 голосов
/ 23 октября 2019

Я пытаюсь создать Airflow DAG, которые читают данные из (или записывают данные) из некоторых электронных таблиц Google. Среди соединений в Airflow я сохранил соединение типа «Google Cloud Platform», которое включает в себя project_id, области действия и «Keyfile JSON», словарь с «type», «project_id», «private_key_id», «private_key», «client_email "," client_id "," auth_uri "," token_uri "," auth_provider_x509_cert_url "," client_x509_cert_url "

Я могу подключиться к таблице Google Spread, используя

cred_dict = ... same as what I saved in Keyfile JSON ...
creds = ServiceAccountCredentials.from_json_keyfile_dict(cred_dict,scope)
client = gspread.authorize(creds)
sheet = client.open(myfile).worksheet(mysheet) # works!

Но я бы предпочелне писать явно ключ в коде и вместо этого импортировать его из подключений Airflow.

Я хотел бы знать, существует ли решение, подобное

from airflow.hooks.some_hook import get_the_keyfile
conn_id = my_saved_gcp_connection
cred_dict = get_the_keyfile(gcp_conn_id=conn_id)
creds = ServiceAccountCredentials.from_json_keyfile_dict(cred_dict,scope)
client = gspread.authorize(creds)
sheet = client.open(myfile).worksheet(mysheet)

Iвидите, есть несколько хуков к соединениям GCP https://airflow.apache.org/howto/connection/gcp.html, но мои небольшие знания заставляют меня не понимать, какой из них использовать и какую функцию (если есть) извлечь файл ключа из сохраненного соединения.

Любое предложениебудет приветствоваться:)

...