使用Airflow时遇到权限错误,收到以下错误:
PermissionError: [Errno 13] Permission denied: '/usr/local/airflow/logs/scheduler/2019-12-18/../../../../home
我们尝试在容器内的/ usr / local / airflow / logs / schedule目录中使用chmod 777 -R,但这似乎并没有解决问题。
我们的entrypoint.sh脚本中包含以下内容:
export AIRFLOW__CORE__BASE_LOGS_FOLDER="/usr/local/airflow/logs
是否还有其他人遇到过此气流日志权限问题?似乎无法在网上找到太多有关此内容的信息。
答案 0 :(得分:1)
使用Apache Airflow 1.10.7时我也遇到同样的问题。
Traceback (most recent call last):
File "/usr/lib/python3.7/multiprocessing/process.py", line 297, in _bootstrap
self.run()
File "/usr/lib/python3.7/multiprocessing/process.py", line 99, in run
self._target(*self._args, **self._kwargs)
File "/home/radifar/.virtualenvs/airflow/lib/python3.7/site-packages/airflow/jobs/scheduler_job.py", line 135, in _run_file_processor
set_context(log, file_path)
File "/home/radifar/.virtualenvs/airflow/lib/python3.7/site-packages/airflow/utils/log/logging_mixin.py", line 198, in set_context
handler.set_context(value)
File "/home/radifar/.virtualenvs/airflow/lib/python3.7/site-packages/airflow/utils/log/file_processor_handler.py", line 65, in set_context
local_loc = self._init_file(filename)
File "/home/radifar/.virtualenvs/airflow/lib/python3.7/site-packages/airflow/utils/log/file_processor_handler.py", line 148, in _init_file
os.makedirs(directory)
File "/home/radifar/.virtualenvs/airflow/lib/python3.7/os.py", line 211, in makedirs
makedirs(head, exist_ok=exist_ok)
File "/home/radifar/.virtualenvs/airflow/lib/python3.7/os.py", line 211, in makedirs
makedirs(head, exist_ok=exist_ok)
File "/home/radifar/.virtualenvs/airflow/lib/python3.7/os.py", line 211, in makedirs
makedirs(head, exist_ok=exist_ok)
[Previous line repeated 5 more times]
File "/home/radifar/.virtualenvs/airflow/lib/python3.7/os.py", line 221, in makedirs
mkdir(name, mode)
PermissionError: [Errno 13] Permission denied: '/media/radifar/radifar-dsl/Workflow/Airflow/airflow-home/logs/scheduler/2020-01-04/../../../../../../../home'
检查file_processor_handler.py的工作方式后,我发现该错误是由示例dag和我们的dag文件夹设置的不同目录位置引起的。在我的情况下,文件夹2020-01-04上方的7文件夹是/ media / radifar。在您的情况下,文件夹2019-12-18上方的4文件夹为/ usr / local。这就是引发PermissionError的原因。
我能够通过清理AIRFLOW_HOME文件夹然后运行airflow version
,set the load_example to False in airflow.cfg来解决此问题。然后运行airflow initdb
。之后,我可以使用气流而不会出错。
答案 1 :(得分:0)
绑定安装的文件夹权限也可能导致此错误。
例如:
docker-compose.yml(伪代码)
service_name:
...
volumes:
- /home/user/airflow_logs:/opt/airflow/logs
授予对本地文件夹的权限,以便气流容器可以写入日志,根据需要创建目录等。
sudo chmod u=rwx,g=rwx,o=rwx /home/user/airflow_logs
答案 2 :(得分:0)
只为遇到同样问题的任何人...
令人惊讶的是,我不得不查看 Airflow documentation... 并根据它:
<块引用>在 Linux 上,容器中挂载的卷使用本机 Linux 文件系统用户/组权限,因此您必须确保容器和主机具有匹配的文件权限。
mkdir ./dags ./logs ./plugins
echo -e "AIRFLOW_UID=$(id -u)\nAIRFLOW_GID=0" > .env
一旦你有匹配的文件权限:
docker-compose up airflow-init
docker-compose up