通过 API 触发 Airflow DAG
Triggering Airflow DAG via API
我已经在 EC2 上安装了 Airflow 2.0.1,并将 PostgreSQL RDS 作为元数据数据库。我想从 Lambda 触发 DAG,因此尝试使用 curl 测试代码,但收到 Unauthorized 作为响应。如果我应该采取不同的做法怎么办?
步骤:
- 为 lambda 创建用户
airflow users create -u lambda_user -p some_pwd -f Lambda -l User -r User -e someone@nowhere.com
- 在 shell 上定义变量(对于 lambda 用户、密码和端点 url)
- 进行 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 被触发了!
我已经在 EC2 上安装了 Airflow 2.0.1,并将 PostgreSQL RDS 作为元数据数据库。我想从 Lambda 触发 DAG,因此尝试使用 curl 测试代码,但收到 Unauthorized 作为响应。如果我应该采取不同的做法怎么办?
步骤:
- 为 lambda 创建用户
airflow users create -u lambda_user -p some_pwd -f Lambda -l User -r User -e someone@nowhere.com
- 在 shell 上定义变量(对于 lambda 用户、密码和端点 url)
- 进行 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 被触发了!