Airflow 2.0 API 响应 403 禁止

标签 airflow airflow-scheduler

我正在尝试通过 Airflow 2.0 REST API 触发新的 dag 运行。如果我在远程机器上登录到 Airflow 网络服务器,然后去 swagger 文档页面测试 API,则调用成功。如果我注销或者 API 调用是通过 Postman 或 curl 发送的,那么我会收到 403 禁止消息。无论我是否提供 Web 服务器用户名密码,curl 或 postman 都会收到相同的 403 错误消息。

curl -X POST --user "admin:blabla" "http://10.0.0.3:7863/api/v1/dags/tutorial_taskflow_api_etl/dagRuns" -H  "accept: application/json" -H  "Content-Type: application/json" -d "{\"conf\":{},\"dag_run_id\":\"string5\"}"
{
  "detail": null,
  "status": 403,
  "title": "Forbidden",
  "type": "https://airflow.apache.org/docs/2.0.0/stable-rest-api-ref.html#section/Errors/PermissionDenied"
}

API 的安全性已更改为默认值,而不是 deny_all (auth_backend = airflow.api.auth.backend.default)。 Airflow 的安装是使用 ubuntu 18 仿生的 pip 完成的。如果手动或计划触发,Dags 运行良好。数据库后端是 postgres。

还尝试将 cookie 详细信息从 Chrome 复制到 postman 以解决此问题,但没有成功。

这是上面提到的两个调用在网络服务器上的日志。

airflowWebserver_container | 10.0.0.4 - - [05/Jan/2021:06:35:33 +0000] "POST /api/v1/dags/tutorial_taskflow_api_etl/dagRuns HTTP/1.1" 403 170 "http://10.0.0.3:7863/api/v1/ui/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36"
airflowWebserver_container | 10.0.0.4 - - [05/Jan/2021:06:35:07 +0000] "POST /api/v1/dags/tutorial_taskflow_api_etl/dagRuns HTTP/1.1" 409 251 "http://10.0.0.3:7863/api/v1/ui/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36"

最佳答案

我正在为 Airflow v2.0 使用 basic_auth。 AIRFLOW__API__AUTH_BACKEND 环境变量应设置为 airflow.api.auth.backend.basic_auth。您将不得不重新启动 webserver 容器。然后您应该能够使用带有 --user 选项的 cURL 命令访问所有稳定的 API。

关于Airflow 2.0 API 响应 403 禁止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65575051/

相关文章:

python-3.x - Xcom pull 返回 `ti` 上的 NameError

airflow - 任务重试次数超过Airflow中指定的重试次数

python - 云 Composer /Airflow : Relationships can only be set between Operators; received PythonOperator

airflow - 无法导入 Airflow 插件

airflow - 仅运行最新的 Airflow DAG

Airflow 1.10 - 任务之间的长时间延迟

Airflow:通过 UI 在 Airflow 中创建 DAG

python - Airflow : Passing a dynamic value to Sub DAG operator

airflow - Airflow 中的执行日期 : need to access as a variable

elasticsearch - Airflow - 如何将任务日志发送到 Elasticsearch ?