LINE Notify + Digdag Treasure Data의 OSS 워크 플로우 엔진을 시도했습니다.
LINE Notify + Digdag Treasure Data의 OSS 워크 플로우 엔진을 시도했습니다.
0. 소개
조금 전부터 신경이 쓰여있었습니다.
LINE Notify + Digdag를 시도했습니다.
용도로서는 처리 시간이 긴 워크 플로우나 스케줄에서의 정기 실행의 결과 통지 등으로 사용할 수 있을 것 같습니다.
별도로 LINE이 아니어도 그 밖에 Chat 툴은 있습니다만...
참고 : LINE Engineers 'Blog 명령줄에서 LINE으로 메시지를 보낼 수 있는 LINE Notify
덧붙여 이번에 소개하는 샘플 코드는, Digdag의 init시에 작성되는 샘플의 dig 파일을 베이스로
워크플로의 시작시, 정상 종료시 or 에러 종료시에 이하 포맷으로 LINE Notify 로서 통지합니다.
YYYY-MM-DD HH:mm:ss digdag ワークフロー名 [start|end|error]
1. 환경
CentOS release 6.8 (Final)
Digdag v0.8.17
2.사용법
Digdag가 설치된 환경에서 다음을 수행합니다.
Digdag 설치에 대한 자세한 내용은 Digdag 공식 사이트 Getting started을 참조하십시오.
덧붙여 코드 세트에 대해서는 github상의 여기 repo에 올리고 있으므로,
아래와 같이 git clone 하거나, 후술하는 샘플 코드를 참조해 주세요.
또, 어느 경우에서도 tasks하하의 쉘에 실행 권한 부여 chmod -R +x tasks/
를 하지 않으면 에러가 되므로 주의해 주세요.
git clone https://github.com/tbuchi888/digdag_line_notify.git
cd digdag_line_notify
chmod -R +x tasks/
여러 번 rerun 할 수 있도록 -a 옵션과 -p 옵션으로 토큰을 지정하여 실행합니다.
digdag run test.dig -a -p accese_token=YOUR_LINES_ACCESE_TOKEN
또, 토큰을 -p 옵션이 아니고, dig 파일에 직접 정의하는 경우는 이하가 됩니다.
digdag run test.dig -a
3. 샘플 코드
파일 구성
./tasks/line_notify.sh
./test.dig
테스트를 위한 워크플로 dig 파일
런타임 (digdag run)에 -p 옵션으로 토큰을 지정하지 않으면,
아래 _export: # accese_token: "YOUR_LINES_ACCESE_TOKEN"
의 코멘트를 제거하고 토큰으로 다시 작성하십시오.
덧붙여 이 샘플은 어디까지나 테스트용으로 의미는 없습니다만, 메세지의 변수 정의(_export:)나, 사이의 태스크의 내용을 조금 바꾸면 응용할 수 있는 것은이라고 생각합니다.
test.digtimezone: Asia/Tokyo
_export:
# When you do not want to use the -p option at the run, you exclude the following comment out, and please rewrite the your token
# accese_token: "YOUR_LINES_ACCESE_TOKEN"
workflow_name: "test"
start_msg: "digdag ${workflow_name} start"
end_msg: "digdag ${workflow_name} finish"
error_msg: "digdag ${workflow_name} error"
+strat:
sh>: tasks/line_notify.sh ${accese_token} "${moment().format("YYYY-MM-DD HH:mm:ss Z")}:${start_msg}"
+repeat:
for_each>:
order: [1st, 2nd, 3rd, 4th, 5th]
animal: [dog, cat, mouse]
_do:
echo>: ${order} ${animal}
_parallel: true
# This is for _error confirmation.
#+fail:
# fail>: "fail!"
+end:
sh>: tasks/line_notify.sh ${accese_token} "${moment().format("YYYY-MM-DD HH:mm:ss Z")}:${end_msg}"
_error:
sh>: tasks/line_notify.sh ${accese_token} "${moment().format("YYYY-MM-DD HH:mm:ss Z")}:${error_msg}"
LINE Notify를 호출하는 간단한 쉘 스크립트
※ 여기 에서 투고한 것과 같은 것입니다
tasks/line_notify.sh#!/bin/sh
ACCESS_TOKEN=$1
MSG=$2
curl -X POST -H "Authorization: Bearer $ACCESS_TOKEN" -F "message=$MSG" https://notify-api.line.me/api/notify
4. 참고 실행 결과
LINE측
Digdag 측의 표준 출력
# digdag run test.dig -a -p accese_token=YOUR_LINES_ACCESE_TOKEN
2016-10-14 15:38:15 +0900: Digdag v0.8.17
2016-10-14 15:38:17 +0900 [WARN] (main): Reusing the last session time 2016-10-14T00:00:00+09:00.
2016-10-14 15:38:17 +0900 [INFO] (main): Using session /CURRENT_DIR/.digdag/status/20161014T000000+0900.
2016-10-14 15:38:17 +0900 [INFO] (main): Starting a new session project id=1 workflow name=test session_time=2016-10-14T00:00:00+09:00
2016-10-14 15:38:20 +0900 [INFO] (0016@+test+strat): sh>: tasks/line_notify.sh YOUR_LINES_ACCESE_TOKEN "2016-10-14 15:38:19 +09:00:digdag test start"
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
107 215 0 29 186 186 49 315 --:--:-- --:--:-- --:--:-- 5636
{"status":200,"message":"ok"}2016-10-14 15:38:21 +0900 [INFO] (0016@+test+repeat): for_each>: {order=[1st, 2nd, 3rd, 4th, 5th], animal=[dog, cat, mouse]}
2016-10-14 15:38:26 +0900 [INFO] (0021@+test+repeat^sub+for-order=2nd&animal=dog): echo>: 2nd dog
2nd dog
2016-10-14 15:38:26 +0900 [INFO] (0020@+test+repeat^sub+for-order=1st&animal=mouse): echo>: 1st mouse
1st mouse
2016-10-14 15:38:26 +0900 [INFO] (0022@+test+repeat^sub+for-order=2nd&animal=cat): echo>: 2nd cat
2nd cat
2016-10-14 15:38:26 +0900 [INFO] (0019@+test+repeat^sub+for-order=1st&animal=cat): echo>: 1st cat
1st cat
2016-10-14 15:38:26 +0900 [INFO] (0016@+test+repeat^sub+for-order=1st&animal=dog): echo>: 1st dog
1st dog
2016-10-14 15:38:27 +0900 [INFO] (0023@+test+repeat^sub+for-order=2nd&animal=mouse): echo>: 2nd mouse
2nd mouse
2016-10-14 15:38:27 +0900 [INFO] (0029@+test+repeat^sub+for-order=4th&animal=mouse): echo>: 4th mouse
4th mouse
2016-10-14 15:38:27 +0900 [INFO] (0024@+test+repeat^sub+for-order=3rd&animal=dog): echo>: 3rd dog
3rd dog
2016-10-14 15:38:27 +0900 [INFO] (0026@+test+repeat^sub+for-order=3rd&animal=mouse): echo>: 3rd mouse
3rd mouse
2016-10-14 15:38:27 +0900 [INFO] (0031@+test+repeat^sub+for-order=5th&animal=cat): echo>: 5th cat
5th cat
2016-10-14 15:38:27 +0900 [INFO] (0032@+test+repeat^sub+for-order=5th&animal=mouse): echo>: 5th mouse
5th mouse
2016-10-14 15:38:27 +0900 [INFO] (0025@+test+repeat^sub+for-order=3rd&animal=cat): echo>: 3rd cat
3rd cat
2016-10-14 15:38:27 +0900 [INFO] (0030@+test+repeat^sub+for-order=5th&animal=dog): echo>: 5th dog
5th dog
2016-10-14 15:38:27 +0900 [INFO] (0027@+test+repeat^sub+for-order=4th&animal=dog): echo>: 4th dog
4th dog
2016-10-14 15:38:27 +0900 [INFO] (0028@+test+repeat^sub+for-order=4th&animal=cat): echo>: 4th cat
4th cat
2016-10-14 15:38:27 +0900 [INFO] (0028@+test+end): sh>: tasks/line_notify.sh YOUR_LINES_ACCESE_TOKEN "2016-10-14 15:38:27 +09:00:digdag test finish"
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
108 216 0 29 187 187 180 1163 --:--:-- --:--:-- --:--:-- 5194
{"status":200,"message":"ok"}Success. Task state is saved at /CURRENT_DIR/.digdag/status/20161014T000000+0900 directory.
* Use --session <daily | hourly | "yyyy-MM-dd[ HH:mm:ss]"> to not reuse the last session time.
* Use --rerun, --start +NAME, or --goal +NAME argument to rerun skipped tasks.
#
Reference
이 문제에 관하여(LINE Notify + Digdag Treasure Data의 OSS 워크 플로우 엔진을 시도했습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/tbuchi888/items/0f7b70606afba04ced6d
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
git clone https://github.com/tbuchi888/digdag_line_notify.git
cd digdag_line_notify
chmod -R +x tasks/
digdag run test.dig -a -p accese_token=YOUR_LINES_ACCESE_TOKEN
digdag run test.dig -a
./tasks/line_notify.sh
./test.dig
timezone: Asia/Tokyo
_export:
# When you do not want to use the -p option at the run, you exclude the following comment out, and please rewrite the your token
# accese_token: "YOUR_LINES_ACCESE_TOKEN"
workflow_name: "test"
start_msg: "digdag ${workflow_name} start"
end_msg: "digdag ${workflow_name} finish"
error_msg: "digdag ${workflow_name} error"
+strat:
sh>: tasks/line_notify.sh ${accese_token} "${moment().format("YYYY-MM-DD HH:mm:ss Z")}:${start_msg}"
+repeat:
for_each>:
order: [1st, 2nd, 3rd, 4th, 5th]
animal: [dog, cat, mouse]
_do:
echo>: ${order} ${animal}
_parallel: true
# This is for _error confirmation.
#+fail:
# fail>: "fail!"
+end:
sh>: tasks/line_notify.sh ${accese_token} "${moment().format("YYYY-MM-DD HH:mm:ss Z")}:${end_msg}"
_error:
sh>: tasks/line_notify.sh ${accese_token} "${moment().format("YYYY-MM-DD HH:mm:ss Z")}:${error_msg}"
#!/bin/sh
ACCESS_TOKEN=$1
MSG=$2
curl -X POST -H "Authorization: Bearer $ACCESS_TOKEN" -F "message=$MSG" https://notify-api.line.me/api/notify
# digdag run test.dig -a -p accese_token=YOUR_LINES_ACCESE_TOKEN
2016-10-14 15:38:15 +0900: Digdag v0.8.17
2016-10-14 15:38:17 +0900 [WARN] (main): Reusing the last session time 2016-10-14T00:00:00+09:00.
2016-10-14 15:38:17 +0900 [INFO] (main): Using session /CURRENT_DIR/.digdag/status/20161014T000000+0900.
2016-10-14 15:38:17 +0900 [INFO] (main): Starting a new session project id=1 workflow name=test session_time=2016-10-14T00:00:00+09:00
2016-10-14 15:38:20 +0900 [INFO] (0016@+test+strat): sh>: tasks/line_notify.sh YOUR_LINES_ACCESE_TOKEN "2016-10-14 15:38:19 +09:00:digdag test start"
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
107 215 0 29 186 186 49 315 --:--:-- --:--:-- --:--:-- 5636
{"status":200,"message":"ok"}2016-10-14 15:38:21 +0900 [INFO] (0016@+test+repeat): for_each>: {order=[1st, 2nd, 3rd, 4th, 5th], animal=[dog, cat, mouse]}
2016-10-14 15:38:26 +0900 [INFO] (0021@+test+repeat^sub+for-order=2nd&animal=dog): echo>: 2nd dog
2nd dog
2016-10-14 15:38:26 +0900 [INFO] (0020@+test+repeat^sub+for-order=1st&animal=mouse): echo>: 1st mouse
1st mouse
2016-10-14 15:38:26 +0900 [INFO] (0022@+test+repeat^sub+for-order=2nd&animal=cat): echo>: 2nd cat
2nd cat
2016-10-14 15:38:26 +0900 [INFO] (0019@+test+repeat^sub+for-order=1st&animal=cat): echo>: 1st cat
1st cat
2016-10-14 15:38:26 +0900 [INFO] (0016@+test+repeat^sub+for-order=1st&animal=dog): echo>: 1st dog
1st dog
2016-10-14 15:38:27 +0900 [INFO] (0023@+test+repeat^sub+for-order=2nd&animal=mouse): echo>: 2nd mouse
2nd mouse
2016-10-14 15:38:27 +0900 [INFO] (0029@+test+repeat^sub+for-order=4th&animal=mouse): echo>: 4th mouse
4th mouse
2016-10-14 15:38:27 +0900 [INFO] (0024@+test+repeat^sub+for-order=3rd&animal=dog): echo>: 3rd dog
3rd dog
2016-10-14 15:38:27 +0900 [INFO] (0026@+test+repeat^sub+for-order=3rd&animal=mouse): echo>: 3rd mouse
3rd mouse
2016-10-14 15:38:27 +0900 [INFO] (0031@+test+repeat^sub+for-order=5th&animal=cat): echo>: 5th cat
5th cat
2016-10-14 15:38:27 +0900 [INFO] (0032@+test+repeat^sub+for-order=5th&animal=mouse): echo>: 5th mouse
5th mouse
2016-10-14 15:38:27 +0900 [INFO] (0025@+test+repeat^sub+for-order=3rd&animal=cat): echo>: 3rd cat
3rd cat
2016-10-14 15:38:27 +0900 [INFO] (0030@+test+repeat^sub+for-order=5th&animal=dog): echo>: 5th dog
5th dog
2016-10-14 15:38:27 +0900 [INFO] (0027@+test+repeat^sub+for-order=4th&animal=dog): echo>: 4th dog
4th dog
2016-10-14 15:38:27 +0900 [INFO] (0028@+test+repeat^sub+for-order=4th&animal=cat): echo>: 4th cat
4th cat
2016-10-14 15:38:27 +0900 [INFO] (0028@+test+end): sh>: tasks/line_notify.sh YOUR_LINES_ACCESE_TOKEN "2016-10-14 15:38:27 +09:00:digdag test finish"
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
108 216 0 29 187 187 180 1163 --:--:-- --:--:-- --:--:-- 5194
{"status":200,"message":"ok"}Success. Task state is saved at /CURRENT_DIR/.digdag/status/20161014T000000+0900 directory.
* Use --session <daily | hourly | "yyyy-MM-dd[ HH:mm:ss]"> to not reuse the last session time.
* Use --rerun, --start +NAME, or --goal +NAME argument to rerun skipped tasks.
#
Reference
이 문제에 관하여(LINE Notify + Digdag Treasure Data의 OSS 워크 플로우 엔진을 시도했습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/tbuchi888/items/0f7b70606afba04ced6d텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)