Airflow 2.0 - не удалось автоматически определить учетные данные (GOOGLE_APPLICATION_CREDENTIALS) - PullRequest
0 голосов
/ 19 июня 2020

У меня есть следующий код из примеров dags по адресу «https://github.com/apache/airflow/tree/master/airflow/providers/google/cloud/example_dags»:

import os
from airflow import models
from airflow.providers.google.cloud.operators.bigquery import (
    BigQueryCreateEmptyDatasetOperator, BigQueryDeleteDatasetOperator,
)
from airflow.utils.dates import days_ago

PROJECT_ID = os.environ.get("GCP_PROJECT_ID", "project_id")
DATASET_NAME = os.environ.get("GCP_BIGQUERY_DATASET_NAME", "dataset_id")

default_args = {"start_date": days_ago(1)}

with models.DAG( "test_dag" , default_args=default_args , schedule_interval=None , tags=["testing"] ) as dag:

create_dataset = BigQueryCreateEmptyDatasetOperator(
        task_id="create_dataset", dataset_id=DATASET_NAME
    )

    delete_dataset = BigQueryDeleteDatasetOperator(
        task_id="delete_dataset", dataset_id=DATASET_NAME, delete_contents=True
    )

    create_dataset >> delete_dataset

Я просто хочу отладить свое соединение Airflow с Google Cloud, создав набор данных а затем удалите его. В настоящее время я получаю следующую ошибку:

Traceback (most recent call last): 
File "/home/airflow/.local/lib/python3.6/site-packages/google/cloud/_helpers.py", line 186, in _determine_default_project _, project = google.auth.default()
File "/home/airflow/.local/lib/python3.6/site-packages/google/auth/_default.py", line 321, in default raise exceptions.DefaultCredentialsError(_HELP_MESSAGE) google.auth.exceptions.DefaultCredentialsError: Could not automatically determine credentials. Please set GOOGLE_APPLICATION_CREDENTIALS or explicitly create credentials and re-run the application. For more information, please see https://cloud.google.com/docs/authentication/getting-started

После получения этого сообщения я попытался установить переменную среды с назначенным путем и явно добавить ее в код. Ни один из этих вариантов не работал. Проблема в том, что любой путь кажется недоступным "google.auth.exceptions.DefaultCredentialsError: File was not found"

1 Ответ

0 голосов
/ 02 июля 2020

Чтобы пропустить эту ошибку, может потребоваться правильное определение учетных данных приложения по умолчанию , получение действительной аутентификации идентификатор , который предоставил доступ к определенному c ресурс в API платформы Google.

В общей аутентификации Airflow GCP концепция , я предполагаю, что вы можете рассмотреть либо:

  • Распространение переменная среды GOOGLE_APPLICATION_CREDENTIALS приближается к пути действующей учетной записи службы JSON файл закрытого ключа в конкретном коде DAG, как было предложено @Priya Agarwal:

    os.environ["GOOGLE_APPLICATION_CREDENTIALS"]="/FULLPATH/TO/JSON.key"
    

или

  • Создайте отдельный Airflow соединение через WEB UI, указав в поле Keyfile Path путь к соответствующему файлу * .key для конкретной учетной записи службы, определяя затем аргумент идентификатора соединения в параметрах оператора DAG, как описано в этом примере.
...