咨询:通过Curl向Airflow UI导入多变量的Payload结构
Airflow API批量导入变量的正确方式
你遇到的问题根源是:Airflow v1 REST API的/api/v1/variables POST接口仅支持创建单个变量,不接受批量提交的格式,所以你尝试的几种payload都会触发schema校验错误。
错误原因解析
- 用
{"key1": "value1", "key2": "value2"}:接口要求必须传key和value字段,自定义键名属于未知字段,同时缺失必填项。 - 用
{"variables": [...]}:接口不存在variables这个参数,只会识别单个变量的key/value字段。 - 用数组
[{"key": ...}, ...]:接口期望接收单个JSON对象,而非数组,因此报类型不匹配。
解决方案
方案1:循环调用单个创建接口(适合少量变量)
通过shell循环逐个发送请求,示例如下:
# 定义要创建的变量列表 variables=( '{"key": "var1", "value": "val1"}' '{"key": "var2", "value": "val2"}' ) # 循环执行curl命令 for var_payload in "${variables[@]}"; do curl -X POST 'http://10.135.7.13:9081/api/v1/variables' \ -H 'accept: application/json' \ -H 'Content-Type: application/json' \ -d "$var_payload" \ --user 'usr:pwd' done
方案2:使用Airflow CLI批量导入(高效适合大量变量)
这是官方推荐的批量导入方式,步骤如下:
- 准备一个JSON格式的变量文件(比如
airflow_vars.json),格式为键值对:
{ "var1": "val1", "var2": "val2", "var3": "val3" }
- 在Airflow部署的服务器上(或能访问Airflow CLI的环境)执行导入命令:
airflow variables import airflow_vars.json
如果需要远程执行,可结合SSH:
ssh your-user@airflow-server "airflow variables import /path/to/airflow_vars.json"
内容的提问来源于stack exchange,提问作者Vanishree Yarakad
相关产品推荐
相关产品推荐

