Запуск DAG из облачной функции Google

Я пытался выполнить DAG в Cloud Composer (composer-1.8.1-airflow-1.10.3), когда файл попадает в корзину GCS на основе облака документация по композитору с облачной функцией в Python

Мне не удалось заставить его работать, каждый раз, когда он срабатывает, функция возвращает это сообщение в журнал

Exception: Bad response from application: 400 / {'Date': 'Mon, 30 Dec 2019 18:07:02 GMT', 'Content-Type': 'text/html', 'Content-Length': '192', 'Server': 'gunicorn/19.9.0', 'Via': '1.1 google', 'Alt-Svc': 'quic=":443"; ma=2592000; v="46,43",h3-Q050=":443"; ma=2592000,h3-Q049=":443"; ma=2592000,h3-Q048=":443"; ma=2592000,h3-Q046=":443"; ma=2592000,h3-Q043=":443"; ma=2592000'} / '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">\n<title>400 Bad Request</title>\n<h1>Bad Request</h1>\n<p>The browser (or proxy) sent a request that this server could not understand.</p>\n'

URL-адрес запроса создается, и токен открытого идентификатора кажется правильным. Ошибка возникает в последней части кода.

resp = requests.request(
    method, url,
    headers={'Authorization': 'Bearer {}'.format(
        google_open_id_connect_token)}, **kwargs)
if resp.status_code == 403:
    raise Exception('Service account {} does not have permission to '
                    'access the IAP-protected application.'.format(
                        signer_email))
elif resp.status_code != 200:
    raise Exception(
        'Bad response from application: {!r} / {!r} / {!r}'.format(
            resp.status_code, resp.headers, resp.text))

Спасибо




Ответы (1)


Отражен код ошибки 400 Bad Request в исходном вопросе чаще всего соответствует проблеме на стороне клиента, действительно, входные параметры для запуска DAG должны быть проверены в первую очередь, функция, которая вызывает вызов IAP в коде пример:

def make_iap_request(url, client_id, method='GET', **kwargs)

Убедитесь, что вы применили зависимости, необходимые для работы с URL-адресом, защищенным IAP, через requirements.txt файл.

Не забудьте проверить основные аргументы, которые вы передаете этой функции:

url: URL-адрес, защищенный прокси-сервером с идентификацией для извлечения.

client_id: идентификатор клиента, используемый Identity-Aware Proxy.

До сих пор я не нашел даже лучшего опыта запуска DAG, чем объяснил @Jacob Ferriero в его великий статья.

person Nick_Kh    schedule 31.12.2019
comment
Спасибо, я решил свою проблему, возникла проблема с requests.request( method, url, headers={'Authorization': 'Bearer {}'.format( google_open_id_connect_token)}, **kwargs) функции make_iap_request. Мне не нужны были параметры для вызова воздушного потока, поэтому я не использовал kwarg. Кажется, что аргумент JSON нужен для вызова функции - person JparedesC; 31.12.2019