Невозможно выполнить команды «dbt run» в экземпляре EC2 через оператор SSH Airflow.Python

Программы на Python
Anonymous
Невозможно выполнить команды «dbt run» в экземпляре EC2 через оператор SSH Airflow.

Сообщение Anonymous »

Я успешно настроил Airflow через MWAA. Я вошел в систему с помощью единого входа с ролью администратора. Я это проверил.
У меня есть экземпляр EC2, в котором есть репозиторий dbt, который выглядит следующим образом:

Код: Выделить всё

home/ubuntu/mmp_redshift_model# ls
README.md  analyses  dbt_project.yml  logs  macros  models  profiles.yml  seeds  snapshots  target  tests  venvs
Команда 
dbt run отлично работает через экземпляр EC2. Я вижу объекты в своем приемнике.
Мой EC2 размещен в VPC, и соединение между MWAA и EC2 в порядке. Протестировал.
Теперь, когда я запускаю этот пример кода DAG, он выдает ошибку:

Код: Выделить всё

default_args = {
'owner': 'airflow',
'depends_on_past': False,
'start_date': datetime(2024, 7, 13),
}
sshHook = SSHHook(ssh_conn_id="ec2_ssh_connection")
dag = DAG(
'dbt_dag',
default_args=default_args,
description='A DAG to run DBT on EC2',
schedule_interval='@daily',
catchup=False,
)

dbt_command = "pwd && cd mmp_redshift_model && source venvs/bin/activate;\
dbt run --profiles-dir .;"

run_dbt_task = SSHOperator(
ssh_hook = sshHook,
task_id='run_dbt_task',
command=dbt_command,
dag=dag,
)

run_dbt_task
Журналы ошибок:

Код: Выделить всё

[2024-07-15, 15:24:50 UTC] {{ssh.py:478}} INFO - Running command: pwd && cd mmp_redshift_model && source venvs/bin/activate;       dbt run --profiles-dir .;
[2024-07-15, 15:24:51 UTC] {{ssh.py:524}} INFO - /home/ubuntu
[2024-07-15, 15:24:53 UTC] {{ssh.py:524}} INFO - [0m15:24:53  Encountered an error:
[2024-07-15, 15:24:53 UTC] {{ssh.py:524}} INFO - [Errno 13] Permission denied: '/home/ubuntu/mmp_redshift_model/logs/dbt.log'
[2024-07-15, 15:24:53 UTC] {{ssh.py:524}} INFO - [0m15:24:53  Traceback (most recent call last):
[2024-07-15, 15:24:53 UTC] {{ssh.py:524}} INFO -   File "/usr/local/lib/python3.10/dist-packages/dbt/cli/requires.py", line 138, in wrapper
[2024-07-15, 15:24:53 UTC] {{ssh.py:524}} INFO -     result, success = func(*args, **kwargs)
[2024-07-15, 15:24:53 UTC] {{ssh.py:524}} INFO -   File "/usr/local/lib/python3.10/dist-packages/dbt/cli/requires.py", line 77, in wrapper
[2024-07-15, 15:24:53 UTC] {{ssh.py:524}} INFO -     setup_event_logger(flags=flags, callbacks=callbacks)
[2024-07-15, 15:24:53 UTC] {{ssh.py:524}} INFO -   File "/usr/local/lib/python3.10/dist-packages/dbt/events/logging.py", line 99, in setup_event_logger
[2024-07-15, 15:24:53 UTC] {{ssh.py:524}} INFO -     add_logger_to_manager(
[2024-07-15, 15:24:53 UTC] {{ssh.py:524}} INFO -   File "/usr/local/lib/python3.10/dist-packages/dbt_common/events/event_manager_client.py", line 17, in add_logger_to_manager
[2024-07-15, 15:24:53 UTC] {{ssh.py:524}} INFO -     _EVENT_MANAGER.add_logger(logger)
[2024-07-15, 15:24:53 UTC] {{ssh.py:524}} INFO -   File "/usr/local/lib/python3.10/dist-packages/dbt_common/events/event_manager.py", line 36, in add_logger
[2024-07-15, 15:24:53 UTC] {{ssh.py:524}} INFO -     _JsonLogger(config) if config.line_format == LineFormat.Json else _TextLogger(config)
[2024-07-15, 15:24:53 UTC] {{ssh.py:524}} INFO -   File "/usr/local/lib/python3.10/dist-packages/dbt_common/events/logger.py", line 147, in __init__
[2024-07-15, 15:24:53 UTC] {{ssh.py:524}} INFO -     super().__init__(config)
[2024-07-15, 15:24:53 UTC] {{ssh.py:524}} INFO -   File "/usr/local/lib/python3.10/dist-packages/dbt_common/events/logger.py", line 107, in __init__
[2024-07-15, 15:24:53 UTC] {{ssh.py:524}} INFO -     file_handler = RotatingFileHandler(
[2024-07-15, 15:24:53 UTC] {{ssh.py:524}} INFO -   File "/usr/lib/python3.10/logging/handlers.py", line 155, in __init__
[2024-07-15, 15:24:53 UTC] {{ssh.py:524}} INFO -     BaseRotatingHandler.__init__(self, filename, mode, encoding=encoding,
[2024-07-15, 15:24:53 UTC] {{ssh.py:524}} INFO -   File "/usr/lib/python3.10/logging/handlers.py", line 58, in __init__
[2024-07-15, 15:24:53 UTC] {{ssh.py:524}} INFO -     logging.FileHandler.__init__(self, filename, mode=mode,
[2024-07-15, 15:24:53 UTC] {{ssh.py:524}} INFO -   File "/usr/lib/python3.10/logging/__init__.py", line 1169, in __init__
[2024-07-15, 15:24:53 UTC] {{ssh.py:524}} INFO -     StreamHandler.__init__(self, self._open())
[2024-07-15, 15:24:53 UTC] {{ssh.py:524}} INFO -   File "/usr/lib/python3.10/logging/__init__.py", line 1201, in _open
[2024-07-15, 15:24:53 UTC] {{ssh.py:524}} INFO -     return open_func(self.baseFilename, self.mode,
[2024-07-15, 15:24:53 UTC] {{ssh.py:524}} INFO - PermissionError: [Errno 13] Permission denied: '/home/ubuntu/mmp_redshift_model/logs/dbt.log'
[2024-07-15, 15:24:54 UTC] {{taskinstance.py:2698}} ERROR - Task failed with exception
Traceback (most recent call last):
File "/usr/local/airflow/.local/lib/python3.11/site-packages/airflow/models/taskinstance.py", line 433, in _execute_task
result = execute_callable(context=context, **execute_callable_kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/airflow/.local/lib/python3.11/site-packages/airflow/providers/ssh/operators/ssh.py", line 191, in execute
result = self.run_ssh_client_command(ssh_client, self.command, context=context)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/airflow/.local/lib/python3.11/site-packages/airflow/providers/ssh/operators/ssh.py", line 179, in run_ssh_client_command
self.raise_for_status(exit_status, agg_stderr, context=context)
File "/usr/local/airflow/.local/lib/python3.11/site-packages/airflow/providers/ssh/operators/ssh.py", line 173, in raise_for_status
raise AirflowException(f"SSH operator error: exit status = {exit_status}")
airflow.exceptions.AirflowException: SSH operator error: exit status = 2
Я также попробовал команду sudo chmod 777, но все равно безуспешно. Если я использую chmod для одного файла, он выдает ошибку в target/manifest.json, а если я разрешаю это, он выдает ошибку для другого файла. Так как мне решить эту проблему сразу?

TIA

Подробнее здесь: https://stackoverflow.com/questions/787 ... h-operator

Вернуться в «Python»