Apache Flink Rest-Client Jar-Upload无法正常工作

cod*_*vic 5 apache-flink

我正在努力通过使用Flink rest-api(可以在flink Github存储库中找到)在我们的CI/CD工作流中自动部署新的Flink作业.

文档只说这罐子上传可能通过使用来实现/jars/upload,但是一个有效的休息请求尚未究竟如何是构建(其中Headers,其Body类型,其中Authorization,这Method等).

所以我看了一下flink/flink-runtime-webGithub项目的Flink仪表板代码,并搜索他们用来上传jar 的实现 --Yippie!它通过调用我试图使用的rest-api来实现(使用POSTas方法).在那之后,我试图找出Postman,这是使用不同的Content-Type标题和Body类型发送请求的正确方法,但现在没有一个对我有用.

我本可以直接向flink项目提交一张票,但找不到任何对票系统的引用.

所以这里的基本问题是:

  • 如何调用其余端点/jars/upload成功上传文件?

Hel*_*ira 8

那些更偏向命令行的人可以使用curl:

curl -X POST -H "Expect:" -F "jarfile=@path/to/flink-job.jar" http://hostname:8081/jars/upload
Run Code Online (Sandbox Code Playgroud)


Nic*_*ves 6

我遇到了同样的问题,并通过在使用Web UI上传jar时查看chrome中的网络请求来解决它.

请求必须

  • 使用分段上传
  • 字段名称必须是jarfile
  • 多部分内容也必须包含文件Content-Type(否则您将从Flink获得500个抱怨缺少标题的内容)

这是一个使用请求进行上传的python脚本

upload = requests.post(                                                                                               
    base_url + "/jars/upload",                                                                                        
    files={
        "jarfile": (
            os.path.basename(path), 
            open(path, "rb"), 
            "application/x-java-archive"
         )
    }
)       
Run Code Online (Sandbox Code Playgroud)