通过 API 触发 Airflow DAG

Triggering Airflow DAG via API

我已经在 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"
}

您正在创建一个角色为 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

修改调用后

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 被触发了!