NIFI Rest API를 활용한 Processor 호출 및 Properties 변경

2020. 4. 4. 13:45Nifi

#1 NIFI API 활용방안  

(base) [root@nifi00 ~]# curl 'http://100.120:8080/nifi-api/processors/d7fd3033-4f3c-16f5-9747-d3e5909dfb1c'

##curl ‘http:// nifi설치된 ip :8080/nifi-api/ à 이부분까지는 고정 이 이후에는

https://nifi.apache.org/docs/nifi-docs/rest-api/index.html를 참고 Processor API를 실행하기위해 Processor ID를 확인합니다.(Processor ID고정값)

 

 

#1.1 Nifi 호출할 수 있는 목록

 

#2 NIFI API를 활용하여 Processor 실행하기

(base) [root@nifi00 ~]# curl 'http://100.120:8080/nifi-api/processors/d7fd3033-4f3c-16f5-9747-d3e5909dfb1c’
#해당 ID 값을 갖고 있는 Processor의 정보 출력

 

 

##Component ID고정값이지만 ClientId Version은 실행이후 항상 변하는 값이다. Script에 해당 커맨드를 넣어서 항상 실행시키고 싶다면 ClientIDVersion파싱하는 작업이 필요하다.

(파싱을 할때  사용자 입장에서 고정값인 Component ID값만 바꾸면 해당 커맨드를 별도의 수정 없이 사용 가능하도록 하는 것을 고려하였다.)

 

#2-1 clientId, Version 파싱

## clientId 파싱

import sys
import requests
import json
def main():
        url = 'http://100.120:8080/nifi-api/processors/' + sys.argv[1]
        r = requests.get(url)
        data = json.loads(r.content.decode())
        subdata = data['revision']
        print (subdata['clientId'])
main()
## Version 파싱

import sys
import requests
import json
def main():
        url = 'http://100.120:8080/nifi-api/processors/' + sys.argv[1]
        r = requests.get(url)
        data = json.loads(r.content.decode())
        subdata = data['revision']
        print (subdata['version'])
main()

 

#3 실행 명령어 작동 확인 및 커맨드 설명

Processor Stop상태

(base) [root@nifi00 ~]# curl 'http://100.120:8080/nifi-api/processors/
d7fd3033-4f3c-16f5-9747-d3e5909dfb1c' -X PUT -H 'Content-Type: application/
json' -H 'Accept: application/
json, text/javascript, */*; q=0.01' --data-binary '{"revision":{"clientId":"$(python3 clientId1.py d7fd3033-4f3c-16f5-9747-d3e5909dfb1c)","version":'$(python3 version1.py d7fd3033-4f3c-16f5-9747-d3e5909dfb1c)'},"component":{"id":"d7fd3033-4f3c-16f5-9747-d3e5909dfb1c","state":"RUNNING"}}’

##코드 설명
#ClientId, Version 에서 url을 ‘http://100.120:8080/nifi-api/processors/’ + sys.argv[1]
#로 정의 하였다. sys.argv[1]에 대응 하는 값을 인식시켜 주기 위하여 고정 값인 
#Component id를 붙여 주었다. 따라서 다른 Processor를 실행 시키고 싶다면 
#해당 Processor의 Id만 바꾸어서 커맨드를 실행시켜주면 된다.

커맨드 실행 후 커맨드 작동 상태

 

 

#4 Property 변경 및 실행 확인

QueryDatabaseTable의 Properties

 

Table NameUSER_INFO_test에서 USER_INFO로 바꿔서 Processor를 실행

 

 

#코드 실행
curl 'http://100.120:8080/nifi-api/processors/d7fd3033-4f3c-16f5-9747-d3e5909dfb1c' -X PUT -H 'Content-Type: application/json' -H 'Accept: application/json, text/javascript, */*; q=0.01' --data-binary '{"revision":{"clientId":"$(python3 clientId1.py d7fd3033-4f3c-16f5-9747-d3e5909dfb1c)","version":'$(python3 version1.py d7fd3033-4f3c-16f5-9747-d3e5909dfb1c)'},"component":{"id":"d7fd3033-4f3c-16f5-9747-d3e5909dfb1c","state":"RUNNING","config":{"properties":{"Table Name":"USER_INFO"}}}}'

 

실행완료
테이블 이름 변경 완료