@TuanVu просто создайте учетную запись службы, и веб-сервер должен использовать ее, не указывая что-то еще

ользуюGoogle Cloud Composer (управляемый Airflow на Google Cloud Platform) с версией изображенияcomposer-0.5.3-airflow-1.9.0 и Python 2.7, и я столкнулся со странной проблемой: после импорта моих групп DAG онине кликабелен из веб-интерфейса (и нет кнопок «Триггер DAG», «Вид графика», ...), при этом все работает отлично при запуске локального воздушного потока.

Даже если их нельзя использовать с веб-сервера в Composer, мои группы доступности баз данных все еще существуют. Я могу перечислить их с помощью CLI (list_dags), Опишите их (list_tasks) и даже вызвать их (trigger_dag).

Минимальный пример, воспроизводящий проблему

Минимальный пример, который я использовал для воспроизведения проблемы, показан ниже. Используя крючок (здесь,GoogleCloudStorageHook) очень важно, поскольку ошибка в Composer возникает при использовании хука. Сначала я использовал пользовательский хук (в пользовательском плагине) и столкнулся с той же проблемой.

В основном здесь, в примере перечислены все записи в корзине GCS (my-bucket) и сгенерируйте DAG для каждой записи, начинающейся сmy_dag.

import datetime

from airflow import DAG
from airflow.contrib.hooks.gcs_hook import GoogleCloudStorageHook
from airflow.operators.bash_operator import BashOperator

google_conn_id = 'google_cloud_default'

gcs_conn = GoogleCloudStorageHook(google_conn_id)

bucket = 'my-bucket'
prefix = 'my_dag'

entries = gcs_conn.list(bucket, prefix=prefix)

for entry in entries:
    dag_id = str(entry)

    dag = DAG(
        dag_id=dag_id,
        start_date=datetime.datetime.today(),
        schedule_interval='0 0 1 * *'
    )

    op = BashOperator(
        task_id='test',
        bash_command='exit 0',
        dag=dag
    )

    globals()[dag_id] = dag
Результаты на Cloud Composer

После импорта этого файла в Composer, вот результат (у меня 4 файла, начинающиеся сmy_dag вmy-bucket):

Как я уже объяснил, группы обеспечения доступности баз данных недоступны для нажатия, а столбцы «Недавние задачи» и «Выполнения группы доступности» загружаются вечно. Знак «информация» рядом с каждым именем группы доступности базы данных говорит:This DAG isn't available in the webserver DagBag object. It shows up in this list because the scheduler marked it as active in the metadata database.

Конечно, обновление не полезно, и при доступе к представлению графика DAG по прямому URL (https://****.appspot.com/admin/airflow/graph?dag_id=my_dag_1), это показывает ошибку:DAG "my_dag_1" seems to be missing.

Результаты на местном воздушном потоке

При импорте скрипта в локальный Airflow веб-сервер работает нормально:

Некоторые тесты

Если я заменю линиюentries = gcs_conn.list(bucket, prefix=prefix) с жестко закодированными значениями, такими какentries = [u'my_dag_1', u'my_dag_2', u'my_dag_3', u'my_dag_4'], тогда группы DAG можно нажимать в веб-интерфейсе Composer (и отображаются все кнопки в столбцах «ссылки»). Похоже, что из других тестов, которые я сделал на моей первоначальной проблеме,вызов метода с крючка (не только инициализация хука) вызывает проблему. Конечно, группы DAG в Composer обычно работают на простых примерах (не требуются перехваты вызовов методов).

Я понятия не имею, почему это произошло, я также проверил журналы (установивlogging_level = DEBUG вairflow.cfg) но не увидел что-то не так. Я подозреваю ошибку в веб-сервере, но не могу получить значительную трассировку стека. Журналы веб-сервера от Composer (размещенные на App Engine) недоступны, или, по крайней мере, я не нашел способа получить к ним доступ.

Кто-то испытывал ту же проблему или похожие проблемы с Composer Web UI? Я думаю, что проблема исходит от использования хуков, но я могу ошибаться. Это может быть просто побочным эффектом. Если честно, я потерял после многих испытаний. Я буду рад, если кто-нибудь сможет мне помочь. Спасибо!

Обновить

При развертывании веб-сервера с автономным управлением в Kubernetes следуйте этому руководству:https://cloud.google.com/composer/docs/how-to/managing/deploy-webserverмои группы доступности баз данных кликабельны от этого самоуправляемого веб-сервера.

Ответы на вопрос(1)

Ваш ответ на вопрос