【问题标题】:Triggering Airflow DAG via API通过 API 触发 Airflow DAG
【发布时间】:2021-12-08 18:04:16
【问题描述】:

我在 EC2 上安装了 Airflow 2.0.1,并使用 PostgreSQL RDS 作为元数据数据库。我想从 Lambda 触发 DAG,因此尝试使用 curl 测试代码,但收到 Unauthorized 作为响应。如果我应该采取不同的做法怎么办?

步骤:

  1. 为 lambda 创建用户
airflow users create -u lambda_user -p some_pwd -f Lambda -l User -r User -e someone@nowhere.com
  1. 在 shell 上定义变量(用于 lambda 用户、密码和端点 url)
  2. 进行 curl 调用
curl -H "Authorization: Basic Base64(username:password)" -H "Content-type: application/json" -H "Accept: application/json" -X GET --user "${LAMBDA_USER}:${LAMBDA_PWD}" "${ENDPOINT_URL}/api/v1/dags/sns_test/dagRuns"

我收到的回复是这样的:

{
 "detail": null,
 "status": 401,
 "title": "Unauthorized",
 "type": "https://airflow.apache.org/docs/2.0.1/stable-rest-api-ref.html#section/Errors/Unauthenticated"
}

【问题讨论】:

    标签: authentication airflow directed-acyclic-graphs airflow-2.x airflow-api


    【解决方案1】:

    您正在创建一个角色为User 的用户。 这是因为你在命令中有-r User

    现在,Airflow 至少需要 Viewer 权限才能调用您调用的端点。您可以在 Apache Airflow 网站 here 上找到该信息。

    如果您更改命令,它将起作用。 改成

    airflow users create -u lambda_user -p some_pwd -f Lambda -l User -r User -e someone@nowhere.com
    

    airflow users create -u lambda_user -p some_pwd -f Lambda -l User -r Viewer -e someone@nowhere.com
    

    【讨论】:

    • 实际上,在从标题中删除授权后,我得到了它。但是,看起来 used API 只是为了获取 dag 的运行列表。我需要找到允许触发 DAG 的 api 或函数。
    【解决方案2】:

    修改调用后

    curl -H "Content-type: application/json" -H "Accept: application/json"
    -X POST --user "${LAMBDA_USER}:${LAMBDA_PWD}" "${ENDPOINT_URL}/api/v1/dags/sns_test/dagRuns" -d '{"conf": {}}'
    

    dag 被触发了!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-06-24
      • 1970-01-01
      • 2018-01-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多