Как поддерживать SSL в Airflow MySQLHook (в частности AWS 2019CA) - PullRequest
0 голосов
/ 06 марта 2020

Я успешно использую MySQLHook в моей Airflow DAG, но теперь сервер MySQL (AWS RDS) будет иметь обязательное SSL-соединение. Мой бэкэнд-инженер сказал мне, что, в частности, AWS 2019 CA следует использовать. Я заглянул в документацию MySQLHook и нашел следующий фрагмент из https://airflow.readthedocs.io/en/stable/_modules/airflow/hooks/mysql_hook.html:

    if conn.extra_dejson.get('ssl', False):
        # SSL parameter for MySQL has to be a dictionary and in case
        # of extra/dejson we can get string if extra is passed via
        # URL parameters
        dejson_ssl = conn.extra_dejson['ssl']
        if isinstance(dejson_ssl, six.string_types):
            dejson_ssl = json.loads(dejson_ssl)
        conn_config['ssl'] = dejson_ssl 

Похоже, мне нужно указать некоторую конфигурацию в виде JSON ("SSL "key) в дополнительном разделе соединения MySQL в Airflow, но я не смог найти никаких примеров этого. Может ли кто-нибудь просветить меня? Любой указатель или пример такого JSON будет очень признателен.

1 Ответ

1 голос
/ 10 марта 2020

Ваши данные Connection.extra должны быть строкой JSON, содержащей объект ssl, подходящий для передачи в функцию mysql_ssl_set, в соответствии с разделом «Функции и атрибуты» в эта страница :

Этот параметр принимает словарь или отображение, где ключами являются имена параметров, используемые вызовом API mysql_ssl_set MySQL C. Если этот параметр установлен, он инициирует соединение SSL с сервером; если в клиенте нет поддержки SSL, возникает исключение. Это должен быть параметр ключевого слова.

Предположительно что-то вроде этого будет работать: {"ssl": {"cert": "PATH TO YOUR PUBLIC CERT FILE ON THE AIRFLOW SERVER"}}

...