通过不带id的API更新nifi控制器和处理器



我需要使用docker(特别是nifi-1.17.0)自动引导nifi。我希望能够在每个新的容器实例上加载模板,而不是运行新实例,然后登录到UI并手动更改所有设置,我希望在bash脚本中自动执行。我需要的是更新一个控制器服务的字段和一个处理器的属性。我知道我的工作流程是这样的:停止处理器禁用控制器服务更新控制器服务启用控制器服务开始处理器

停止处理器更新属性开始处理器

但我也明白,每次我使用模板时,所有的处理器和控制器都有一个不同的ID。

如果我不知道我的处理器和控制器将具有什么ID,我如何自动执行此操作或使用API ?我如何上传模板并通过API使用它?

提前感谢大家!

我正在使用以下Dockerfile运行容器:

FROM ubuntu:20.04
# Args
ENV NIFI_SERVER_IP "some ip"
ENV BASE_DIR "some path"
# Create our workdir
RUN mkdir -p ${BASE_DIR} && cd ${BASE_DIR}
# Set workdir
WORKDIR ${BASE_DIR}
# Copy bootstrap to workdir
COPY script.sh .
# Run the bootstrap
RUN apt-get update && apt-get install curl -y
RUN ./script.sh ${NIFI_SERVER_IP}
# Set workdir to new workdir
#WORKDIR ${BASE_DIR}/something i didnt want to share/nifi-1.17.0/bin
# Command to run when container starts
#CMD ["./nifi.sh","start"]

和我的脚本是:

#!/bin/bash
apt-get update
DEBIAN_FRONTEND=noninteractive apt-get install dialog
DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends tzdata
DEBIAN_FRONTEND=noninteractive apt-get install wget -y
DEBIAN_FRONTEND=noninteractive apt-get install git-all -y
wget https://archive.apache.org/dist/nifi/1.17.0/nifi-1.17.0-bin.zip
DEBIAN_FRONTEND=noninteractive apt install unzip -y
unzip nifi-1.17.0-bin.zip 
cd nifi-1.17.0
sed -i 's/127.0.0.1/0.0.0.0/g' conf/nifi.properties
sed -i "s/nifi.web.proxy.host=/nifi.web.proxy.host=$1:8443/g" conf/nifi.properties
DEBIAN_FRONTEND=noninteractive apt-get install java-11-openjdk -y
DEBIAN_FRONTEND=noninteractive apt-get install openjdk-11 -y
DEBIAN_FRONTEND=noninteractive apt-get install openjdk-11-jre -y
echo "export JAVA_HOME='/usr/lib/jvm/java-11-openjdk-amd64/'" >> ~/.bashrc
cd bin
./nifi.sh start
./nifi.sh set-single-user-credentials admin nifipassword1
./nifi.sh stop

您应该唯一地命名流中的每个Controller或Processor对象,并根据该名称在设置脚本中搜索它们。其中一些操作可以通过NiFi CLI实现,但是我建议您通过社区Python客户端NiPyAPI(我是主要作者)自动化更复杂的NiFi Flow配置

最新更新