ãã®æè¡ã«ç²ŸéããŠãã1ãæåŸã«ãæãã€è¬ã䜿ãå§ããããšã«æ³šæããå¿ èŠããããŸãã NiFiãããªã¬ãŒã ã£ãã®ããæåŸã®ã¹ãããŒã ã£ãã®ãã¯å®ãã§ã¯ãªãããã®äºå®ãžã®é¢äžãäžæã§ããããããç§ã¯ãã®éã®æœåšçãªåå¿è ãåŸ ã£ãŠãããã¹ãŠãæŠèª¬ããããšãçŽæããã®ã§ãç§ã¯ã§ããã ãççŽã§ãªããã°ãªããŸããã
æè¡çã«ã¯ãApache NiFiãããŸããŸãªãµãŒãã¹éã®åŒ·åãªãªã³ã¯ã§ããïŒãµãŒãã¹éã§ããŒã¿ã亀æããéäžã§ãããã匷åããã³å€æŽã§ããããã«ããïŒãšããç§ã¯ã¢ããªã¹ãã®èгç¹ãããããæ€èšããŸããããã¯ãNiFiãéåžžã«äŸ¿å©ãªETLããŒã«ã§ããããã§ããç¹ã«ãããŒã ãšããŠãSaaSã¢ãŒããã¯ãã£ã®æ§ç¯ã«éç¹ã眮ããŠããŸãã
ç§ã®ã¯ãŒã¯ãããŒã®1ã€ãã€ãŸãJira Softwareã«é¢ãã鱿¬¡ã¬ããŒãã®äœæãšé åžãèªååããçµéšã«ã€ããŠããã®èšäºã§é瀺ããããšæããŸããã¡ãªã¿ã«ãã¿ã¹ã¯ãã©ãã«ãŒåæææ³ã«ã€ããŠã説æããŠå ¬éããŸããããã¯ãåŸæ¥å¡ãäœãããŠããã®ããšãã質åã«æç¢ºã«çããŸãããŸããè¿ãå°æ¥ã説æããŠå ¬éããŸãã
ãã®èšäºã¯åå¿è åãã§ãããçµéšè±å¯ãªã¢ãŒããã¯ãïŒããã°æç¥ïŒããã®èšäºãæ¹è©ããããããŸããŸãªæŽ»ååéã§NiFiã®äœ¿çšäŸãå ±æããããããšãæ£ãããŠåœ¹ç«ã€ãšæããŸããç§ãå«ããŠããããã®äººã«æè¬ããŸãã
ApacheNiFiã®æŠå¿µãç°¡åã«èª¬æããŸãã
Apache NiFiã¯ãã·ã¹ãã éã®èªååãšããŒã¿ãããŒå¶åŸ¡ã®ããã®ãªãŒãã³ãœãŒã¹è£œåã§ããå§ããã«ã¯ã2ã€ã®ããšãããã«çè§£ããããšãéèŠã§ãã
1ã€ç®ã¯ããŒã³ãŒããŸãŒã³ã§ããç§ãæå³ããã®ã¯ïŒ NiFiã«å ¥ã£ãç¬éããæœåºãŸã§ã®ããŒã¿ã䜿çšãããã¹ãŠã®æäœã¯ãæšæºã®ããŒã«ïŒããã»ããµïŒã䜿çšããŠå®è¡ã§ãããšæ³å®ãããŠããŸããç¹å¥ãªå Žåã®ããã«ãbashããã¹ã¯ãªãããå®è¡ããããã®ããã»ããµããããŸãã
ããã¯ãNiFiã§äœããè¡ãã®ãééã£ãŠããããšã瀺åããŠããŸã-ããã¯éåžžã«å°é£ã§ãïŒããããç§ã¯ãªããšãããŸããïŒ-ããã2çªç®ã®ãã€ã³ãã§ãïŒãããã»ããµãããã«ããªãã蹎ãã®ã§é£ãã-ã©ãã«ãšã©ãŒãéä¿¡ããŸããïŒããããã©ããããïŒã©ã®ãããåŸ ã€ã®ãïŒãããŠãããã§ããªãã¯ç§ã«å°ãã¹ããŒã¹ãäžããŸããïŒããã¥ã¡ã³ããæ³šææ·±ãèªã¿ãŸãããïŒç
2çªç®ïŒããŒïŒã¯ã¹ããªãŒãã³ã°ããã°ã©ãã³ã°ã®æŠå¿µã§ããããã以äžã®ãã®ã§ã¯ãããŸãããããã§ãç§ã¯å人çã«ããã«ã¯ããããŸããã§ããïŒå€æããªãã§ãã ããïŒãRã§æ©èœããã°ã©ãã³ã°ã®çµéšããããç¡æèã®ãã¡ã«NiFiã§æ©èœã圢æããŸãããæçµçã«-ããçŽã-ç§ã®ååã¯ããããã®ãæ©èœããåéã«ããããšããç§ã®ç¡é§ãªè©Šã¿ãèŠããšãã«ç§ã«è©±ããŸããã
仿¥ã¯çè«ã§ååã ãšæããŸããç·Žç¿ãããã¹ãŠããã£ãšããåŠã³ãŸããããæ¯é±ã®Jiraåæã®æè¡ä»æ§ã®é¡äŒŒæ§ãå®åŒåããŸãããã
- ãã®é±ã®èèªããäœæ¥ãã°ãšå€æŽã®å±¥æŽãååŸããŸãã
- ãã®æéã®åºæ¬çãªçµ±èšã衚瀺ãã質åã«çããŸãïŒããŒã ã¯äœãããŠããŸãããïŒ
- äžåžãååã«ã¬ããŒããéä¿¡ããŸãã
äžçã«ããå€ãã®å©çãããããããã«ãç§ã¯æ¯é±ã®æéã«ãšã©ãŸãããã¯ããã«å€§éã®ããŒã¿ãããŠã³ããŒãããæ©èœãåããããã»ã¹ãéçºããŸããã
ãããçè§£ããŸãããã
æåã®ã¹ããããAPIããããŒã¿ãååŸãã
Apache NiFiã«ã¯ãå¥ã®ãããžã§ã¯ãã®ãããªãã®ã¯ãããŸãããå ±éã®ã¯ãŒã¯ã¹ããŒã¹ãšããã®äžã«ããã»ã¹ã®ã°ã«ãŒãã圢æããæ©èœãããããŸãããããã§ååã§ãã
ããŒã«ããŒã§ããã»ã¹ã°ã«ãŒããèŠã€ããŠãJira_reportã°ã«ãŒããäœæããŸãã ã°ã«ãŒãã«ç§»åããŠãã¯ãŒã¯ãããŒã®äœæãéå§ããŸããçµã¿ç«ãŠå¯èœãªããã»ããµã®ã»ãšãã©ã¯ãã¢ããã¹ããªãŒã æ¥ç¶ãå¿ èŠãšããŸããç°¡åã«èšããšãããã¯ããã»ããµãèµ·åããããªã¬ãŒã§ãããããã£ãŠããããŒå šäœãéåžžã®ããªã¬ãŒã§å§ãŸãããšã¯è«ççã§ããNiFiã§ã¯ããããGenerateFlowFileããã»ããµã§ãã 圌ã¯ã©ããªãä»äºãããŠããŸããã屿§ãšã³ã³ãã³ãã®ã»ããã§æ§æãããã¹ããªãŒãã³ã°ãã¡ã€ã«ãäœæããŸãã屿§ã¯ãã³ã³ãã³ãã«é¢é£ä»ããããŠããæååã®ããŒãšå€ã®ãã¢ã§ãã
ã³ã³ãã³ãã¯éåžžã®ãã¡ã€ã«ã§ããããã€ãã®ã»ããã§ããã³ã³ãã³ããFlowFileã®æ·»ä»ãã¡ã€ã«ã§ãããšæ³åããŠãã ããã
AddProcessorâGenerateFlowFileãå®è¡ããŸããèšå®ã§ã¯ããŸããããã»ããµåãèšå®ããããšã匷ããå§ãããŸãïŒããã¯è¯ãããŒã³ã§ãïŒ-[èšå®]ã¿ãããã1ã€ã®ãã€ã³ãïŒããã©ã«ãã§ã¯ãGenerateFlowFileã¯ã¹ããªãŒã ãã¡ã€ã«ãç¶ç¶çã«çæããŸãããããå¿ èŠã«ãªãå¯èœæ§ã¯ã»ãšãã©ãããŸãããå®è¡ã¹ã±ãžã¥ãŒã«ãããã«ãããšãã°æå€§60ç§ïŒ[ã¹ã±ãžã¥ãŒã«]ã¿ãïŒã«å¢ãããŸãã ãŸãã[ããããã£]ã¿ãã§ãã¬ããŒãæéã®éå§æ¥ïŒreport_from屿§ïŒãyyyy / mm / ddã®åœ¢åŒã®å€ã§ç€ºããŸãã Jira APIã®ããã¥ã¡ã³ãã«ãããšãã¢ã³ããŒãã®åé¡ã«ã¯1000以äžã®å¶éããããŸãããããã£ãŠããã¹ãŠã®ã¿ã¹ã¯ãååŸããã«ã¯ãããŒãžããŒã·ã§ã³ãã©ã¡ãŒã¿ãŒstartAtãšmaxResultsãæå®ããJQLãªã¯ãšã¹ããäœæããå¿ èŠããããŸãã
UpdateAttributeããã»ããµã䜿çšããŠå±æ§ãèšå®ããŸããããåæã«ãã¬ããŒãã®çææ¥ãåºå®ããŸããåŸã§å¿ èŠã«ãªããŸãã ããããactual_date屿§ã«æ°ã¥ããã§ãããããã®å€ã¯ãåŒèšèªã䜿çšããŠèšå®ãããŸãããã®äžã«ã¯ãŒã«ãªããŒãã·ãŒãããã£ããããŸãã ããã§ãJQLã倪ãããããšãã§ããŸããããŒãžããŒã·ã§ã³ãã©ã¡ãŒã¿ãšå¿ é ãã£ãŒã«ãã瀺ããŸãããã®åŸãHTTPãªã¯ãšã¹ãã®æ¬æã«ãªããŸãã®ã§ãã³ã³ãã³ãã«éä¿¡ããŸãããããè¡ãã«ã¯ãReplaceTextããã»ããµã䜿çšãããã®çœ®æå€ã次ã®ããã«æå®ããŸãã
{"startAt": ${startAt}, "maxResults": ${maxResults}, "jql": "updated >= '2020/11/02'", "fields":["summary", "project", "issuetype", "timespent", "priority", "created", "resolutiondate", "status", "customfield_10100", "aggregatetimespent", "timeoriginalestimate", "description", "assignee", "parent", "components"]}
屿§ãªã³ã¯ãã©ã®ããã«èšè¿°ãããŠãããã«æ³šç®ããŠãã ããã
ããã§ãšãããããŸããHTTPãªã¯ãšã¹ããéä¿¡ããæºåãæŽããŸããã InvokeHTTPããã»ããµã¯ããã«é©åããŸããã¡ãªã¿ã«ã圌ã¯äœã§ãã§ããŸã...ç§ã¯ã¡ãœããGETãPOSTãPUTãPATCHãDELETEãHEADãOPTIONSãæå³ããŸãããã®ããããã£ã次ã®ããã«å€æŽããŠã¿ãŸããã
ãHTTPã¡ãœããPOSTããããŸãã
ç§ãã¡ã®fatã®ãªã¢ãŒãURLã«ã¯ãIPãããŒããããã³/ rest / api / 2 / searchïŒJql =ãå«ãŸããŸãã
åºæ¬èªèšŒãŠãŒã¶ãŒåãšåºæ¬èªèšŒãã¹ã¯ãŒãã¯ã倪ã£ãè³æ Œã§ãã
Content-Typeãapplication / json bã«å€æŽããSend Message Bodyã§trueã«ããŸããããã¯ããªã¯ãšã¹ãæ¬æã®åã®ããã»ããµããéä¿¡ãããJSONãéä¿¡ããããšãæå³ããŸãã
é©çšããŸãã
apishã®å¿çã¯ãã³ã³ãã³ãã«å«ãŸããJSONãã¡ã€ã«ã«ãªããŸãããã®äžã«ã¯ãã·ã¹ãã å ã®ã¿ã¹ã¯ã®ç·æ°ãå«ãåèšãã£ãŒã«ããšããã§ã«ããã€ãã®ã¿ã¹ã¯ãå«ãŸããŠããåé¡é åã®2ã€ã«é¢å¿ããããŸããçããè§£æããŠãEvaluateJsonPathããã»ããµã«ã€ããŠçè§£ããŸãããã
JsonPathã1ã€ã®ãªããžã§ã¯ããæããŠããå Žåãè§£æçµæã¯ãããŒãã¡ã€ã«å±æ§ã«æžã蟌ãŸããŸãããããäŸã§ã-åèšãã£ãŒã«ããšæ¬¡ã®ç»é¢ã JsonPathããªããžã§ã¯ãã®é åãæããŠããå ŽåããããŒãã¡ã€ã«ãè§£æããçµæãåãªããžã§ã¯ãã«å¯Ÿå¿ããã³ã³ãã³ããå«ãã»ããã«åå²ãããŸããæ¬¡ã«äŸã瀺ããŸã-åé¡ãã£ãŒã«ããå¥ã®EvaluateJsonPathãé 眮ããæ¬¡ã®ããã«èšè¿°ããŸããããããã£-åé¡ãå€-$ãissueã
ããã§ãã¹ããªãŒã ã¯1ã€ã®ãã¡ã€ã«ã§ã¯ãªãã倿°ã®ãã¡ã€ã«ã§æ§æãããŸããããããã®ã³ã³ãã³ãã«ã¯ã1ã€ã®ç¹å®ã®ã¿ã¹ã¯ã«é¢ããæ å ±ãå«ãJSONãå«ãŸããŸãã
é²ãã maxResultsã100ã«èšå®ããããšãèŠããŠããŸããïŒåã®ã¹ãããã®åŸãæåã®ã¿ãœã¯ã100åãããŸãããã£ãšååŸããŠãããŒãžããŒã·ã§ã³ãå®è£ ããŸãããã
ãããè¡ãã«ã¯ãéå§ã¿ã¹ã¯çªå·ãmaxResultsã ãå¢ãããŸãããã UpdateAttributeãããäžåºŠäœ¿çšããŠã¿ãŸããããstartAt屿§ãæå®ããããã«æ°ããå€$ {startAtïŒplusïŒ$ {maxResults}ïŒ}ãå²ãåœãŠãŸãã
ããŠãã¿ã¹ã¯ã®æå€§æ°ã«å°éããããã®ãã§ãã¯ãªãã§ã¯å®è¡ã§ããŸãã-RouteOnAttributeããã»ããµãèšå®ã¯æ¬¡ã®ãšããã§ãã ãããŠã«ãŒãããŸããåèšãããšãéå§ã¿ã¹ã¯æ°ãã¿ã¹ã¯ã®ç·æ°ããå°ãªãéãããµã€ã¯ã«ãå®è¡ãããŸããããããã®åºå£ã§-tasoksã®æµããããã»ã¹ã¯æ¬¡ã®ããã«ãªããŸãã
ã¯ããåéãç§ã¯ç¥ã£ãŠããŸã-ããªãã¯ååºå Žãžã®ç§ã®ã³ã¡ã³ããèªãã®ã«ããããããŠããŸããåçãã®ãã®ãçè§£ããããç§ã¯ããã«å察ãããã®ã¯äœããããŸããã
ãã®ã»ã¯ã·ã§ã³ã§ã¯ãåå¿è ãNiFiã«ç°¡åã«åå ã§ããããã«ããå¿ èŠããããŸãããããªããç§ãæãã¿ãªãæç€ºãããã³ãã¬ãŒããæã«ããã®ã§ã詳现ãæãäžããã®ã¯é£ãããããŸããã
ãšãŒãããäžã®ã®ã£ããããäœæ¥ãã°ã®ã¢ããããŒããªã©ã
ããŠãã¹ããŒããäžããŸãããã圌ããèšãããã«ãéããèŠã€ããŠãã ããïŒ ããç°¡åãªèªèã®ããã«ãç§ã¯ã¯ãŒã¯ãã°ãšå€æŽã®å±¥æŽãã¢ã³ããŒãããããã»ã¹ãå¥ã®ã°ã«ãŒãã«ç§»ããŸãããããã§ã¯ã次ã®ãšããã§ãã èªåçã«Jiraã®ããã®äœæ¥ãã°ãã¢ã³ããŒãããéã«å¶éãåé¿ããã«ã¯ãåå¥ã«ããããã®ã¿ã¹ã¯ãåç §ããããšããå§ãããŸããããã圌ãã®éµãå¿ èŠãªçç±ã§ããæåã®åã¯ãtasokã®ã¹ããªãŒã ãããŒã®ã¹ããªãŒã ã«å€æããã ãã§ããæ¬¡ã«ãã¢ããã·ã¥ã«ç®ãåããŠçããä¿åããŸãã ãã¹ãŠã®ã¿ã¹ã¯ã®äœæ¥ãã°ãšå€æŽãã°ãå¥ã ã®ããã¥ã¡ã³ãã®åœ¢åŒã§æŽçãããšäŸ¿å©ã§ãããããã£ãŠãMergeContentããã»ããµã䜿çšããŠããã¹ãŠã®ãããŒãã¡ã€ã«ã®ã³ã³ãã³ããããã«æ¥çããŸãã
ãŸãããã³ãã¬ãŒãã«ã¯ããšããã¯ããšã«ããŒã¿ãã¢ã³ããŒãããããã®ã°ã«ãŒãããããŸãããžã©ã®åäºè©©ã¯ãä»ã®å€ãã®äººãææããäžè¬çãªã¿ã¹ã¯ã§ãããã®ã°ã«ãŒãã¯ãäžéšã®ã¿ã¹ã¯ã®ãšããã¯ã«é¢ããæ å ±ã倱ããªãããã«ãã¿ã¹ã¯ã®äžéšã®ã¿ããã€ãã³ã°ãããå Žåã«åœ¹ç«ã¡ãŸãã
æçµæ®µéãã¬ããŒãã®çæãšé»åã¡ãŒã«ã«ããéä¿¡
ã¯ãããã¹ãŠã®ããããã¢ã³ããŒãããã2ã€ã®æ¹æ³ã§ç§»åããŸãããã¯ãŒã¯ãã°ãã¢ã³ããŒãããããã®ã°ã«ãŒããšãã¬ããŒããçæããããã®ã¹ã¯ãªããã§ããåŸè ã§ã¯ãSTDINã1ã€ããããããã¹ãŠã®ã¿ã¹ã¯ã1ã€ã®å±±ã«éããå¿ èŠããããŸããããã¯MergeContentã§è¡ããŸããããã®åã«ãæçµçãªjsonãæ£ãããªãããã«ãã³ã³ãã³ããå°ãä¿®æ£ããŸãã ã¹ã¯ãªããçæã¹ã¯ãšã¢ïŒExecuteStreamCommandïŒã®åã«ãè峿·±ãåŸ æ©ããã»ããµããããŸãã圌ã¯ãã¯ãŒã¯ãã°ã¢ã³ããŒãã°ã«ãŒãã«ããNotifyããã»ããµããããã¹ãŠã®æºåãæŽããæ¬¡ã«é²ãããšãã§ãããšããä¿¡å·ãåŸ ã¡ãŸããæ¬¡ã«ãbash-a --ExecuteStreamCommandããã¹ã¯ãªãããå®è¡ããŸãããããŠãPutEmailã䜿çšããŠããŒã å šäœã«ã¬ããŒããéä¿¡ããŸãã
ã¹ã¯ãªããã«ã€ããŠè©³ãã説æããŸãããŸããJira Softwareåæãåœç€Ÿã«å®è£ ããçµéšã«ã€ããŠã¯ãå¥ã®èšäºã§è©³ãã説æããŸãããã®èšäºã¯å æ¥æºåãæŽããŸãã
èŠããã«ãç§ãã¡ãéçºããã¬ããŒãã¯ããŠããããŸãã¯ããŒã ãè¡ã£ãŠããããšã®æŠç¥çãã¥ãŒãæäŸããŸãããããŠãããã¯ã©ããªäžåžã«ãšã£ãŠãããããã®ãªããã®ã§ããããªãã¯åæããªããã°ãªããŸããã
ããšãã
ã¹ã¯ãªããã䜿ã£ãŠããããã¹ãŠãäžåºŠã«å®è¡ã§ããã®ãªãããªãç²ãæãŠãŠããŸãã®ã§ãããããã¯ããåæããŸãããéšåçã«ã§ãã
Apache NiFiã¯éçºããã»ã¹ãç°¡çŽ åããã®ã§ã¯ãªããæäœãç°¡çŽ åããŸãããã€ã§ãã¹ã¬ããã忢ããç·šéããŠæåããããçŽãããšãã§ããŸãã
ããã«ãNiFiã¯ãäŒç€ŸãçããŠããããã»ã¹ããããããŠã³ã§è¡šç€ºããŸããæ¬¡ã®ã°ã«ãŒãã§ã¯ãå¥ã®ã¹ã¯ãªãããäœæããŸãããã1ã€ã¯ç§ã®ååã®è£å€ã§ããããããŸãããïŒããªãã®æã®ã²ãã®äžã§å»ºç¯ãäžåžã®åè«ãšããŠãåŸã§å šå¡ãè§£éã§ããããã«Apache NiFiãå®è£ ããŠããŸããããã¿ã³ãæŒããã®ã¯ç§ã ãã§ãããããããããã¯åè«ã§ãã
ããŠããã®äŸã§ã¯ãã¬ããŒããçæããŠæçŽãéãããã®ã¹ã±ãžã¥ãŒã«ã¿ã¹ã¯ã®åœ¢ã®ãã³ããšãŠããšãŠã楜ããã§ãã
ç§ã¯åçœããŸããç§ã¯ç§ã®éãæ³šãåºããæè¡ãç ç©¶ããéçšã§ç§ãèžãã ã¬ãŒãã«ã€ããŠããªãã«è©±ãããšãèšç»ããŠããŸãã-ãããã®æ°ãããããããã§ã¯ãã§ã«é·ãéèªãŸããŠããŸããèå³ã®ãããããã¯ãããã°æããŠãã ããããããŸã§ã®éãåéãããããšããã³ã¡ã³ãã§ããªããåŸ ã£ãŠããŸãã
䟿å©ãªãªã³ã¯
ApacheNiFiãæã§æåã§ã«ããŒããç¬åµçãªèšäºããã·ã¢èªã®
çãã¬ã€ãã
ã¯ãŒã«ãªè¡šçŸèšèªããŒãã·ãŒãã
è±èªã話ãApacheNiFiã³ãã¥ããã£ã¯è³ªåãåãä»ããŠããŸããTelegram
ã®ãã·ã¢èªã話ãApacheNiFiã³ãã¥ããã£ã¯ããã¹ãŠã®çãç©ãããçãçããšããŠããŸãã