Сводка моей группы доступности базы данных:
Я использую оператор S SH для S SH для экземпляра EC2 и запускаю файл JAR, который будет подключаться к нескольким БД. Я объявил Airflow Connection в моем файле DAG и смог передать переменные в экземпляр EC2. Как вы можете видеть ниже, я передаю свойства в команду JAVA.
Airflow version - airflow-1-10.7
Package installed - apache-airflow[crypto]
from airflow import DAG
from datetime import datetime, timedelta
from airflow.contrib.hooks.ssh_hook import SSHHook
from airflow.contrib.operators.ssh_operator import SSHOperator
from airflow.hooks.base_hook import BaseHook
from airflow.models.connection import Connection
ssh_hook = SSHHook(ssh_conn_id='ssh_to_ec2')
ssh_hook.no_host_key_check = True
redshift_connection = BaseHook.get_connection("my_redshift")
rs_user = redshift_connection.login
rs_password = redshift_connection.password
mongo_connection = BaseHook.get_connection("my_mongo")
mongo_user = mongo_connection.login
mongo_password = mongo_connection.password
default_args = {
'owner': 'AIRFLOW',
'start_date': datetime(2020, 4, 1, 0, 0),
'email': [],
'retries': 1,
}
dag = DAG('connect_to_redshift', default_args=default_args)
t00_00 = SSHOperator(
task_id='ssh_and_connect_db',
ssh_hook=ssh_hook,
command="java "
"-Drs_user={rs_user} -Drs_pass={rs_pass} "
"-Dmongo_user={mongo_user} -Dmongo_pass={mongo_pass} "
"-jar /home/airflow/root.jar".format(rs_user=rs_user,rs_pass=rs_pass,mongo_user=mongo_user,mongo_pass=mongo_pass),
dag=dag)
t00_00
Проблема
Значение для rs_pass,mongo_pass
будет отображено в Rendered_Template / Airflow log, что не очень хорошо, и я хотел бы иметь решение, которое может скрыть всю эту конфиденциальную информацию из журнала и обработанного шаблона с помощью оператора S SH.
До сих пор я пытался свести к минимуму подробный журнал для ОШИБКА в airflow.cfg, но она все еще отображается в Rendered_Template.
Пожалуйста, просветите меня.
Спасибо