NIFI Rest API를 활용한 Processor 호출 및 Properties 변경
2020. 4. 4. 13:45ㆍNifi
#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에 해당 커맨드를 넣어서 항상 실행시키고 싶다면 ClientID와 Version을 파싱하는 작업이 필요하다.
(파싱을 할때 사용자 입장에서 고정값인 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 실행 명령어 작동 확인 및 커맨드 설명
(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 변경 및 실행 확인
Table Name을 USER_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"}}}}'
'Nifi' 카테고리의 다른 글
Nifi를 통하여 File형태를 AWS Redshift에 LOAD (0) | 2020.04.07 |
---|---|
Nifi를 통하여 AWS RedShift Connection 및 load data (2) | 2020.04.06 |
Nifi를 활용하여 RDB Table 복제 2 (0) | 2020.03.31 |
Nifi를 활용하여 R-DB Table 복제 1 (0) | 2020.03.31 |
Nifi를 활용한 실시간 로그파일 Depth 별 수집 및 HDFS, AWS S3 저장 (2) | 2020.03.28 |