イベントは、SORACOM CLI または SORACOM API でも作成できます。
SORACOM CLI を利用するには、あらかじめ SORACOM CLI をインストールし、認証情報を保存してください。詳しくは、SORACOM CLI をインストールする を参照してください。
新しいイベントを作成する
soracom event-handlers create
(EventHandler:createEventHandler API
) を使用します。
$ soracom event-handlers create --body @{JSON ファイルのパス}
SORACOM API を利用するには、API キーと API トークンが必要です。詳しくは、API キーと API トークンの取り扱いについて を参照してください。
新しいイベントを作成する
EventHandler:createEventHandler API
を使用します。
$ curl -v -X POST https://api.soracom.io/v1/event_handlers --body @{JSON ファイルのパス}
JSON ファイル
SORACOM CLI / SORACOM API でイベントを作成する場合は、イベントハンドラーの仕組み で説明した「監視設定」「ルール」「アクション」の 3 つの要素を、JSON ファイルで指定します。
JSON ファイルの例
JSON ファイルは、JSON フォーマットで記述されたテキスト形式のファイルです。
たとえば、「データ通信量が月間 1024 MiB を超えたら通信速度を制限する」イベントを作成するには、以下のような JSON ファイルを作成します。
{
"targetOperatorId": "OP0000000000",
"name": "Event handler",
"description": "Sample description",
"ruleConfig": {
"type": "SubscriberMonthlyTrafficRule",
"properties": {
"inactiveTimeoutDateConst": "BEGINNING_OF_NEXT_MONTH",
"limitTotalTrafficMegaByte": "1024"
}
},
"actionConfigList": [
{
"type": "ChangeSpeedClassAction",
"properties": {
"speedClass": "s1.minimum",
"executionDateTimeConst": "IMMEDIATELY"
}
},
{
"type": "ChangeSpeedClassAction",
"properties": {
"speedClass": "s1.standard",
"executionDateTimeConst": "BEGINNING_OF_NEXT_MONTH"
}
},
{
"type": "SendMailToOperatorAction",
"properties": {
"executionDateTimeConst": "IMMEDIATELY",
"executionOffsetMinutes": "1",
"title": "速度制限のお知らせ",
"message": "対象 IoT SIM: ${imsi}\n\nIoT SIMの月次データ通信量が 1024 MiBに到達したため、通信速度が \"s1.minimum\" に制限されました。"
}
},
{
"type": "SendMailToOperatorAction",
"properties": {
"executionDateTimeConst": "BEGINNING_OF_NEXT_MONTH",
"executionOffsetMinutes": "1",
"title": "速度制限解除のお知らせ",
"message": "対象 IoT SIM: ${imsi}\n\n速度制限期間が終了したため、通信速度が \"si.standard\" に設定されました。"
}
}
],
"status": "active"
}
上記の例はそのままでは使用できません
たとえば、仮のオペレーター ID (OP0000000000
) が使用されています。コピーする場合は、仮のオペレーター ID を自分のオペレーター ID に変更してください。
なお、オペレーター ID は、API キーと API トークンを発行する ときに返されます。SORACOM ユーザーコンソールでオペレーター ID を確認する操作については、オペレーター ID を確認する を参照してください。
主なプロパティ
JSON ファイルに指定する主なプロパティは以下のとおりです。詳しくは、EventHandler:createEventHandler API
を参照してください。
プロパティ | 型 | 説明 |
---|---|---|
name * | String | イベント名を指定します。 |
description | String | 概要を指定します。 |
targetImsi (*1) | String | 監視対象の IoT SIM の IMSI を指定します。 |
targetGroupId (*1) | String | 監視対象のグループを指定します。グループに所属するすべての IoT SIM が監視されます。 |
targetSimId (*1) | String | 監視対象の IoT SIM の SIM ID を指定します。 |
targetOperatorId (*1) | String | 監視対象のオペレーターを指定します。オペレーターが保有するすべての IoT SIM が監視されます。 |
ruleConfig | Object | ルールを指定します。詳しくは、ルールタイプ一覧 を参照してください。 |
actionConfigList | Object | アクションタイプを指定します。詳しくは、アクションタイプ一覧 を参照してください。 |
status | String | active (有効)、または inactive (無効) を指定します。 |
- (*1) いずれか 1 つを指定してください。
設定サンプル
サンプルです
以下の JSON はサンプルです。プロパティによっては、ダミーの値が設定されています。コピーする場合は、すべての項目が適切に設定されていることを確認してください。
IoT SIM の速度変更時に Slack に通知するサンプル
{
"targetOperatorId": "OP0000000000",
"name": "SpeedClass",
"ruleConfig": {
"type": "SimSpeedClassAttributeRule",
"properties": {
"inactiveTimeoutDateConst": "IMMEDIATELY"
}
},
"actionConfigList": [
{
"type": "ExecuteWebRequestAction",
"properties": {
"headers": "{\"contentType\":\"application/json; charset=utf-8\"}",
"executionDateTimeConst": "IMMEDIATELY",
"httpMethod": "POST",
"body": "{\"text\":\"${imsi} speed class changed. from ${oldSpeedClass} to ${newSpeedClass}\"}",
"contentType": "application/json",
"url": "https://hooks.slack.com/services/XXXX"
}
}
],
"status": "active"
}
上記の例はそのままでは使用できません
たとえば、仮のオペレーター ID (OP0000000000
) が使用されています。コピーする場合は、仮のオペレーター ID を自分のオペレーター ID に変更してください。
なお、オペレーター ID は、API キーと API トークンを発行する ときに返されます。SORACOM ユーザーコンソールでオペレーター ID を確認する操作については、オペレーター ID を確認する を参照してください。
1 日のデータ通信量が 100 MiB を超えた場合に 1 日後 (24 時間後) まで速度制限しメール通知するサンプル
{
"targetImsi": "xxxxxxxxxxxx",
"name": "100MiBリミット",
"description": "1 日のデータ通信量が 100 MiB を超えた場合に 1 日後 (24 時間後) まで速度制限",
"ruleConfig": {
"type": "SubscriberDailyTrafficRule",
"properties": {
"inactiveTimeoutDateConst": "AFTER_ONE_DAY",
"limitTotalTrafficMegaByte": "100"
}
},
"actionConfigList": [
{
"type": "ChangeSpeedClassAction",
"properties": {
"speedClass": "s1.slow",
"executionDateTimeConst": "IMMEDIATELY"
}
},
{
"type": "ChangeSpeedClassAction",
"properties": {
"speedClass": "s1.fast",
"executionDateTimeConst": "AFTER_ONE_DAY"
}
},
{
"type": "SendMailAction",
"properties": {
"executionDateTimeConst": "IMMEDIATELY",
"to": "notify@exmaple.com",
"title": "ソラコムからのお知らせ",
"message": "1日のデータ通信量が100MiBに到達したので速度制限を行います"
}
},
{
"type": "SendMailAction",
"properties": {
"executionDateTimeConst": "AFTER_ONE_DAY",
"to": "notify@exmaple.com",
"title": "ソラコムからのお知らせ",
"message": "速度制限を解除します"
}
}
],
"status": "active"
}
累積 3000 MiB 利用時に AWS Lambda を呼び出すサンプル
累積でのイベントのため、inactiveTimeoutDateConst
に NEVER
(再評価しない) を設定しています。
{
"targetOperatorId": "OP0000000000",
"name": "3000 MiBリミット",
"description": "累積 3000 MiB 利用時に AWS Lambda 呼び出し",
"ruleConfig": {
"properties": {
"inactiveTimeoutDateConst": "NEVER",
"limitTotalTrafficMegaByte": "3000"
},
"type": "SimCumulativeTotalTrafficRule"
},
"actionConfigList": [
{
"properties": {
"credentialsId": "認証情報 ID",
"endpoint": "https://lambda.ap-northeast-1.amazonaws.com",
"functionName": "{Lambdaのfunction名}",
"executionDateTimeConst": "IMMEDIATELY",
"parameter3": "param3",
"parameter2": "param2",
"parameter1": "param1"
},
"type": "InvokeAWSLambdaAction"
}
],
"status": "active"
}
上記の例はそのままでは使用できません
たとえば、仮のオペレーター ID (OP0000000000
) が使用されています。コピーする場合は、仮のオペレーター ID を自分のオペレーター ID に変更してください。
なお、オペレーター ID は、API キーと API トークンを発行する ときに返されます。SORACOM ユーザーコンソールでオペレーター ID を確認する操作については、オペレーター ID を確認する を参照してください。
速度クラス変更時に AWS Lambda で履歴を保存するサンプル
速度クラス変更のルールで利用できる変数 (${newSpeedClass}
と ${oldSpeedClass}
) を使用して、AWS Lambda に変更前後の速度クラスを送信し、AWS Lambda でデータベースなどに履歴を保存するイメージです。
{
"targetOperatorId": "OP0000000000",
"name": "SpeedClass変更",
"description": "速度クラス変更時に AWS Lambda で履歴を保存",
"ruleConfig": {
"properties": {
"inactiveTimeoutDateConst": "IMMEDIATELY",
"targetSpeedClass": null
},
"type": "SubscriberSpeedClassAttributeRule"
},
"actionConfigList": [
{
"properties": {
"credentialsId": "{認証情報 ID}",
"endpoint": "https://lambda.ap-northeast-1.amazonaws.com",
"functionName": "{Lambdaのfunction名}",
"executionDateTimeConst": "IMMEDIATELY",
"parameter1": "${oldSpeedClass}",
"parameter2": "${newSpeedClass}"
},
"type": "InvokeAWSLambdaAction"
}
],
"status": "active"
}
上記の例はそのままでは使用できません
たとえば、仮のオペレーター ID (OP0000000000
) が使用されています。コピーする場合は、仮のオペレーター ID を自分のオペレーター ID に変更してください。
なお、オペレーター ID は、API キーと API トークンを発行する ときに返されます。SORACOM ユーザーコンソールでオペレーター ID を確認する操作については、オペレーター ID を確認する を参照してください。