想知道是否有人可以对这个问题有所了解:
我正在尝试找到Airflow REST API URL以启动DAG以从AWS Lambda函数运行。
到目前为止,从查看Apache孵化器站点提供的所有相关文档,解决问题的唯一指导是在Lambda(python 3.6)代码中使用此URL结构:
Apache实验API:https://airflow.apache.org/api.html#endpoints
基于该链接,语法应为:
http://airflow_hostname/api/experimental/dags/<DAG_ID>/
但是,无法从我的AWS Lambda函数启动特定DAG,任何帮助/指导或指针都会很棒。
答案 0 :(得分:2)
在Airflow 1.10中,以下发布请求将起作用:
.data() std::string
您需要传递一个空的JSON字符串,否则发布请求将失败。
答案 1 :(得分:1)
这里只是一个后续...这篇文章对我也有帮助。当前答案提到POST正文需要JSON字符串(是否为空)……这是正确的。另一个很微妙的地方是,OP中的URL缺少该URL的“ / dag_runs”结尾部分。
为澄清起见,这是一个简单的AWS lambda函数,该函数调用名为“ hello_world”的Airflow DAG:
import os
from botocore.vendored import requests
import json
def lambda_handler(event, context):
print("Event Passed to Handler: " + json.dumps(event))
data = {}
url = 'http://ec2-11-111-11-111.us-east-2.compute.amazonaws.com:8080/api/experimental/dags/hello_world/dag_runs'
print('sending POST request: ' + url)
r = requests.post(url, json.dumps(data))
print('response:')
print(r)
return r.status_code