SORACOM Air 이벤트 핸들러와 AWS Lambda를 함께 사용해 보세요.
7151 단어 SORACOM
소개
SORACOM 릴리스 기념 릴레이 블로그 의 10/8 분입니다!
SORACOM Beam 의 tcp to https 네타를 준비하고 있으면, 앞을 넘어 버렸다. (업계 용어로 말하면 "메소된") 때문에, 급거별의 네타입니다.
이벤트 핸들러란?
SORACOM Air에는 이벤트 핸들러라는 기능이 있습니다.
이벤트 핸들러는 SIM의 통신 용량을 트리거로
SORACOM Air에는 이벤트 핸들러라는 기능이 있습니다.
이벤트 핸들러는 SIM의 통신 용량을 트리거로
할 일입니다.
위 2개는 「감시」기능에서도 사용되고 있습니다만, 3번째의 Lambda 펑션의 실행을 사용하면 여러가지 일이 생길 것 같아서, 시험해 보았습니다.
AWS Lambda 함수를 모르는 분들에게 설명하면 JavaScript 및 Java 코드를 이벤트 중심으로 시작하기 위한 AWS 서비스가 됩니다.
※자세한 정보는 이벤트 핸들러 기능 상세을 참조
예: 사용량이 일정을 초과하면 Slack에 알리기
통신량 일정한 용량 이상에 도달했을 경우에, Slack의 채널에 노출되는 ^H^H 통지를 실시합니다.
매개변수
이벤트 핸들러에서 시작된 Lambda 함수에는 다음과 같이 이벤트 객체가 전달됩니다.
{
"imsi":"対象のimsi",
"parameter1":"上記のparameter1",
"parameter2":"上記のparameter2",
"parameter3":"上記のparameter3"
}
parameter1 에는 Daily/Monthly/Total 의 종별, parameter2 에는 역치의 통신 용량, parameter3 에는 slack 의 web hook path 를 건네주기로 합니다.
슬랙 설정
먼저 https://{teamname}.slack.com/services/new/incoming-webhook로 이동하여 Slack의 incoming webhook을 만듭니다.
이 때 발행되는 Webhook URLhttps://hooks.slack.com/services/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
와 같은 형식이므로, parameter3에는/services 이후의/services/T04CJJPJP/B0C37JEH0/GsKRwBf5dWZcCUwca7Bk0Iw9
을 전달합니다.
AWS 측 설정
Lambda Function 만들기
Lambda의 Function을 만들고 HTTP를 요청하는 프로그램을 만듭니다.
{
"imsi":"対象のimsi",
"parameter1":"上記のparameter1",
"parameter2":"上記のparameter2",
"parameter3":"上記のparameter3"
}
Function 신규 작성 화면 엽니다
// Generated by CoffeeScript 1.10.0
var https, slack;
https = require('https');
slack = {
channel: "#general",
username: "SORACOM",
emoji: ":signal_strength:"
};
exports.handler = function(event, context) {
var options, payload, req;
options = {
method: 'POST',
hostname: 'hooks.slack.com',
port: 443,
path: event.parameter3
};
payload = {
channel: slack.channel,
username: slack.username,
icon_emoji: slack.emoji,
text: event.parameter1 + " traffic of your SIM (IMSI: " + event.imsi + ") exceeded " + event.parameter2 + "."
};
req = https.request(options, function(res) {
res.setEncoding('utf8');
return res.on('data', function(d) {
console.log(d);
context.succeed(d);
});
});
req.on('error', function(e) {
context.fail(e.message);
});
req.write(JSON.stringify(payload));
req.end();
};
return;
(새 탭이 열리지만 팝업 창이 차단 될 수 있으므로 허용하십시오)
{
"imsi": "12345",
"parameter1": "Daily",
"parameter2": "1GB",
"parameter3": "/services/.../..."
}
ok
가 표시되면 Lambda 설정이 완료됩니다.Slack에
Daily traffic of your SIM (IMSI: 12345) exceeded 1GB.
와 같은 메시지가 게시되었는지 확인하십시오. <테스트 실행 이미지>
SORACOM 측 설정
설정 내용을 JSON으로 작성하고 soracom event_handler create에 전달합니다 (매개 변수를 적절하게 읽으십시오).
$ cat req.json
{
"targetOperatorId": "OP0000000000",
"name": "1日1GBでslackに通知",
"description": "1日1GB利用時",
"ruleConfig": {
"type": "DailyTrafficRule",
"properties": {
"inactiveTimeoutDateConst": "BEGINNING_OF_NEXT_DAY",
"limitTotalTrafficMegaByte": 1000
}
},
"actionConfigList": [
{
"properties": {
"accessKey": "AWSアクセスキー",
"secretAccessKey": "AWSシークレットキー",
"endpoint": "https://lambda.ap-northeast-1.amazonaws.com",
"functionName": "lambda2slack",
"executionDateTimeConst": "IMMEDIATELY",
"parameter1": "Daily",
"parameter2": "1GB",
"parameter3": "/services/T04CJJPJP/B0C37JEH0/GsKRwBf5dWZcCUwca7Bk0Iw9"
},
"type": "InvokeAWSLambdaAction"
}
]
}
$ soracom event_handler create --req "$(cat req.json)"
{
"result": "success"
}
잠시 기다리면 슬랙에 게시되었습니다 (실험을 위해 임계 값을 1MB로 설정).
결론
Lambda 에서 SORACOM API client for Node.js 를 사용하는 것으로, 예를 들면 일정 이상 통신했을 때에 휴지하고 다음 달이 되면 해약, 라고 하는 처리를 넣는 것으로, 약간의 선불 SIM의 구조를 만들 수 있을 것 같네요.
Reference
이 문제에 관하여(SORACOM Air 이벤트 핸들러와 AWS Lambda를 함께 사용해 보세요.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/j3tm0t0/items/71fe2d52397c5f37359b
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(SORACOM Air 이벤트 핸들러와 AWS Lambda를 함께 사용해 보세요.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/j3tm0t0/items/71fe2d52397c5f37359b텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)