NiFi 除了可以向 DB、Data Storage 存取資料之外,很多場景可能也需要接收 API 的資料或是發送 API,所以今天這篇來介紹一下 NiFi 如何去做到這件事情。此外,也會額外介紹 NiFi 本身的 API。
我們除了可以透過 UI 來做設定之外,NiFi 本身也有提供 API 來做操作,根據 NiFi API 文件,我們可以透過 NiFi API 來設定 controller service, template, processor 等,但這樣的操作通常會比較複雜,主要是我們不確定設定出來的結果與狀況。
那你可能會問,那就不需要 NiFi API 了對嗎?其實也不盡然,以我的個人經驗,我比較常會用到 NiFi API 的場境是在做 Monitoring 的時候,還記得 Day12 NiFi - Reporting Task & Bulletin Board 這篇提到,當 NiFi 在監控時發現問題時,就會把訊息丟到 Bulletin Board,但往往這樣的訊息是不足夠去做描述的,所以我會做一個持續監聽相關 API 的 Piepeline,然後當有訊息出來時,再補上必要的資訊內容,最後才會發送到 Email 或是 Slack。
但原則上在 NiFi 上可以操作的動作,都有對應的 API,因為 NiFi 在 UI 上也是呼叫 API,所以可以再依據自己的情境來決定要採用哪一個 API。
講完了 NiFi 本身的 API 了,那接下來要來介紹 NiFi 有哪些 Processor 是可以支援我們去對 API 做存取的操作,幫大家整理成下表:
Processors | Introduction |
---|---|
GetHTTP | 專只對下載內容相關的 API 做使用,類似 wget 指令 |
PostHTTP | 專只對 POST 為 type 的 http method 來做使用 |
InvokeHTTP | 該 Processor 可支援到更多 http method 的 API 使用,像是 PUT , DELETE , OPTIONS 等 |
ListenHTTP | 通常會被用來作為一個監聽的 Processor,可以定期去向 API 發送 POST request,就會將結果產生 FlowFiles。 |
接著,帶大家來看一下 GetHTTP
, PostHTTP
, InvokeHTTP
常用的這三個 Processor 這當中是如何做設定的。
我們都知道這一個下載檔案的 Processor,想像是就是類似於我們會透過 wget 的指令去做下載的意思,所以我拿 NiFi 的 Download URL 來做範例:
POST
request 的 URL。看到以上幾個設定,其實並不會太難,主要是 InvokeHTTP
這個 Processor 可能要稍微注意一下,正因為他支援多個 HTTP Method,所以你會發現他底下的 Property 參數很多,圖上只列出了一半,因此若要使用該 Processor 的話,記得還是搭配文件去做確認與設定,這樣才會比較好。
今天帶讀者們簡單暸解了一下 NiFi API 的文件與用途,以及如何透過 NiFi 來和 API 等 endpoint 來做一個操作設定,這部分確實我過去用的經驗偏少,可能能帶給大家的並不多,但我覺得在其他的應用場景仍會有用到的需求,尤其時企業內部本來就會有專屬自己的 API Endpoint,很多時候確實會需要這當中的資料交換,因次我還是介紹了這部分的主題,讓讀者們知道 NiFi 其實也可以做這樣的一件事情。
明天我會介紹 NiFi 是如何發布訊息到 Email 和 Slack,這對於在做一些資料或硬體監控時,這部分的處理是很有幫助的。