MENU

Soracom

Users

API を使って設定する

当ガイドでは、API を使用したイベントハンドラーの設定方法を説明します。

設定方法

イベントハンドラーは、ユーザーコンソールだけでなく API でも設定できます。具体的には /event_handlers に対する POST(Create Event Handler) で設定をします。 soracom-cli で作成する場合には、soracom event-handlers create --body @{JSONファイルのパス} となります。

JSON の構造は以下のとおりです。target, ruleConfig, actionConfigList[] がイベントハンドラの設定に必要な要素です。各要素についてはこの後の項目で詳しく解説します。

{
  "handlerId": "ハンドラーのID 更新時に使用",

  //targetImsi,targetOperatorId,targetGroupのいずれかをセットします
  "targetImsi": "IMSI番号",
  "targetGroupId": "グループID",
  "targetSimId": "SIM ID",
  "targetOperatorId": "OperatorId",

  "name": "表示名",
  "description": "ハンドラーの詳細",
  "ruleConfig": {
    "type": "ルールのタイプ",
    "properties": { "key": "value" }
  },
  "actionConfigList": [
    {
      "type": "アクションのタイプ",
      "properties": { "key": "value" }
    }
  ]
}

具体的には、例えばユーザーコンソールの監視設定から「データ通信量が月間 1GB を超えたら通信速度を制限する」という設定を投入し SORACOM CLIsoracom event-handlers list コマンドで確認すると以下のような設定が入っていることが確認できます。

{
  "handlerId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "targetImsi": null,
  "targetGroupId": null,
  "targetSimId": null,
  "targetOperatorId": "OP0000000000",
  "name": "Prefixed event handler",
  "description": null,
  "ruleConfig": {
    "type": "MonthlyTrafficRule",
    "properties": {
      "inactiveTimeoutDateConst": "BEGINNING_OF_NEXT_MONTH",
      "limitTotalTrafficMegaByte": "1000"
    }
  },
  "status": "active",
  "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",
        "message": "対象SIM ${imsi} \n\nSIMの月次通信量が1000MiBに到達したので通信速度が制限されました",
        "title": "速度制限のお知らせ"
      }
    },
    {
      "type": "SendMailToOperatorAction",
      "properties": {
        "executionDateTimeConst": "BEGINNING_OF_NEXT_MONTH",
        "message": "対象SIM ${imsi} \n\n速度制限期間が終わったので、速度が元に戻りました",
        "title": "速度制限解除のお知らせ"
      }
    }
  ]
}

各パラメータについて、これ以降で説明します。

target

イベントハンドラーの実行対象を設定するための項目です。以下のいずれかを指定してください。

  • targetImsi (IMSI)
  • targetGroupId (グループ ID)
  • targetSimId (SIM ID)
  • targetOperatorId (オペレータ ID)

SIM ID については こちら をご確認ください。

複数のルール(例えば IMSI 単位と OperatorId 全体)が同時に条件を満たした場合、デフォルトでは両方のアクションが実行されます。 ただし SIM 詳細の監視タブより、グループや全体の SIM に対してのアクションを無効にする事が可能です。

3. ruleConfig

actionConfigList[] で指定されたアクションを実行するかどうかを判定するルールを設定する項目です。 例えば「月の通信量が XX MiB を越したらアクションを実行」というようなルールを設定することで、指定のアクションを実行できます。

{
  "ruleConfig": {
    "type": "ルールのタイプ",
    "properties": { "key": "value" }
  }
}

どのルールを使用するかは、type 属性で指定します。また各ルールには、共通パラメータとして inactiveTimeoutDateConst を設定できます。これは、ルール適用時に、このルールを再評価させない期間の指定となります。 例えばその月で XX MiB 使ったらアクションを実行する場合は、BEGINNING_OF_NEXT_MONTH を指定しておくと、一度ルールにマッチしたあとは翌月まではルールを評価対象から外すことができます。

3.1. type 一覧

type説明
SubscriberDailyTrafficRuleサブスクライバーの日のデータ通信量が一定を超えたらアクションを実行するルール
SubscriberMonthlyTrafficRuleサブスクライバーの月のデータ通信量が一定を超えたらアクションを実行するルール
SubscriberCumulativeTrafficRuleサブスクライバーの利用開始からの累積データ通信量が一定を超えたらアクションを実行するルール
SubscriberStatusAttributeRuleサブスクライバーのステータスが変更されたらアクションを実行するルール
SubscriberSpeedClassAttributeRuleサブスクライバーの速度クラスが変更されたらアクションを実行するルール
SubscriberFirstTrafficRule当ルールを設定後、サブスクライバーの通信量が初めて記録されたら実行するルール
SubscriberExpiredRuleサブスクライバーの有効期限が切れた時にアクションを実行するルール
SimDailyTotalTrafficRuleSIM(SIM ID)の日のデータ通信量が一定を超えたらアクションを実行するルール
SimMonthlyTotalTrafficRuleSIM(SIM ID)の月のデータ通信量が一定を超えたらアクションを実行するルール
SimCumulativeTotalTrafficRuleSIM(SIM ID)の利用開始からの累積データ通信量が一定を超えたらアクションを実行するルール
SimStatusAttributeRuleSIM(SIM ID)のステータスが変更されたらアクションを実行するルール
SimSpeedClassAttributeRuleSIM(SIM ID)の速度クラスが変更されたらアクションを実行するルール
SimExpiredRuleSIM(SIM ID)の有効期限が切れた時にアクションを実行するルール
SimSubscriptionStatusRuleサブスクリプションの追加を行った場合に OTA の状況によってアクションを実行するルール
DailyTotalTrafficRuleOperator にひもづく全 SIM の日のデータ通信量合計が一定を超えたらアクションを実行するルール
MonthlyTotalTrafficRuleOperator にひもづく全 SIM の月のデータ通信量合計が一定を超えたらアクションを実行するルール

3.2. 各 type で共通した properties

properties説明
inactiveTimeoutDateConstどのルールでも設定を行う必須プロパティ。ルールが実行された後、再度評価されるタイミングの指定。
inactiveTimeoutOffsetMinutes任意のプロパティ。inactiveTimeoutDateConst で設定した時間との差分を指定します(単位: 分)。inactiveTimeoutDateConst から指定時間(分)の経過後に再評価を実行します。
runOnceAmongTargettrue or false を指定します。true を指定した場合、監視対象に含まれるいずれかのサブスクライバーのルールが適用された後、次に再評価を行うタイミングまでは監視対象に含まれる別のサブスクライバーに対してルールの評価をしません。 再評価のタイミング をあわせてご確認ください。

inactiveTimeoutDateConst が取りうる値は以下のとおりです。

説明
IMMEDIATELYすぐに再実行
BEGINNING_OF_NEXT_MONTH翌月初(協定世界時 UTC を基準)
BEGINNING_OF_NEXT_DAY翌日開始時(協定世界時 UTC を基準)
AFTER_ONE_DAY1 日後
NEVER実行/再評価を行わない

3.3. ruleConfig の type に応じた properties の設定

type: SubscriberDailyTrafficRule

サブスクライバーの日のデータ通信量が一定を超えたらアクションを実行するルール

properties説明
limitTotalTrafficMegaByteこのデータ量(MiB)を超えたらアクションを実行する
このルールでは 再評価を行うタイミング(inactiveTimeoutDateConst) として すぐに再評価 (IMMEDIATELY) を指定できません。

type: SubscriberMonthlyTrafficRule

サブスクライバーの月のデータ通信量が一定を超えたらアクションを実行するルール

properties説明
limitTotalTrafficMegaByteデータ量(MiB)がこの量を超えたらアクションを実行する
このルールでは 再評価を行うタイミング(inactiveTimeoutDateConst) として すぐに再評価 (IMMEDIATELY) を指定できません。

type: SubscriberCumulativeTrafficRule

サブスクライバーの利用開始からの累積データ通信量が一定を超えたらアクションを実行するルール

properties説明
limitTotalTrafficMegaByte累積データ量(MiB)がこの値を超えたらアクションを実行する
このルールでは 再評価を行うタイミング(inactiveTimeoutDateConst) として すぐに再評価 (IMMEDIATELY) を指定できません。

type: SubscriberStatusAttributeRule

サブスクライバーのステータスが変更されたらアクションを実行するルール

properties説明
targetStatusSIM がこのステータスになった場合にアクションを実行する。例えば targetStatusinactive に設定しておくと、SIM が inactive になった時に指定のアクションを実行できます。

targetStatus が取りうる値は以下のとおりです。

targetStatus の値説明
null(未設定)すべてのステータス
readyready ステータス
activeactive ステータス
inactiveinactive ステータス
suspendedsuspended ステータス
terminatedterminated ステータス

サポートされる変数 (この変数は、Action の中で設定すると実行時にその値を取得できます)

サポートされる変数説明
${newStatus}変更後のステータス
${oldStatus}変更前のステータス

ステータスの詳細は リファレンス: SIM のステータス一覧 もご確認ください。

type: SubscriberSpeedClassAttributeRule

サブスクライバーの速度クラスが変更されたらアクションを実行するルール

properties説明
targetSpeedClassSIM がこの速度クラスになった場合にアクションを実行する。例えば targetSpeedClasss1.minimum に設定しておくと、SIM が s1.minimum の速度クラスになった時にアクションを実行できます。

targetSpeedClass が取りうる値は以下のとおりです。

targetStatus の値説明
null(未設定)すべての速度クラス
s1.minimum速度クラス s1.minimum
s1.slow速度クラス s1.slow
s1.standard速度クラス s1.standard
s1.fast速度クラス s1.fast
s1.4xfast速度クラス s1.4xfast

サポートされる変数 (この変数は、Action の中で設定すると実行時にその値を取得できます)

サポートされる変数説明
${newSpeedClass}変更後の速度クラス
${oldSpeedClass}変更前の速度クラス

type: SubscriberFirstTrafficRule

当ルールを設定後、サブスクライバーの通信量が初めて記録されたら実行するルール

このルールで指定できる properties とサポートされる変数はありません。また、このルールでは inactiveTimeoutDateConstNEVER のみ指定できます。

type: SubscriberExpiredRule

サブスクライバーの有効期限が切れた時にアクションを実行するルール

サポートされる変数 (この変数は、Action の中で設定すると実行時にその値を取得できます)

サポートされる変数説明
${newStatus}有効期限が切れた後のステータス
${oldStatus}有効期限が切れる前のステータス

type: SimDailyTotalTrafficRule

SIM(SIM ID)の日のデータ通信量が一定を超えたらアクションを実行するルール

properties説明
limitTotalTrafficMegaByteこのデータ量(MiB)を超えたらアクションを実行する
このルールでは 再評価を行うタイミング(inactiveTimeoutDateConst) として すぐに再評価 (IMMEDIATELY) を指定できません。

type: SimMonthlyTotalTrafficRule

SIM(SIM ID)の月のデータ通信量が一定を超えたらアクションを実行するルール

properties説明
limitTotalTrafficMegaByteデータ量(MiB)がこの量を超えたらアクションを実行する
このルールでは 再評価を行うタイミング(inactiveTimeoutDateConst) として すぐに再評価 (IMMEDIATELY) を指定できません。

type: SimCumulativeTotalTrafficRule

SIM(SIM ID)の利用開始からの累積データ通信量が一定を超えたらアクションを実行するルール

properties説明
limitTotalTrafficMegaByte累積データ量(MiB)がこの値を超えたらアクションを実行する
このルールでは 再評価を行うタイミング(inactiveTimeoutDateConst) として すぐに再評価 (IMMEDIATELY) を指定できません。

type: SimStatusAttributeRule

SIM(SIM ID)のステータスが変更されたらアクションを実行するルール

properties説明
targetStatusSIM がこのステータスになった場合にアクションを実行する。例えば targetStatusinactive に設定しておくと、SIM が inactive になった時に指定のアクションを実行できます。

targetStatus が取りうる値は以下のとおりです。

targetStatus の値説明
null(未設定)すべてのステータス
readyready ステータス
activeactive ステータス
inactiveinactive ステータス
suspendedsuspended ステータス
terminatedterminated ステータス

サポートされる変数 (この変数は、Action の中で設定すると実行時にその値を取得できます)

サポートされる変数説明
${newStatus}変更後のステータス
${oldStatus}変更前のステータス

ステータスの詳細は リファレンス: SIM のステータス一覧 もご確認ください。

type: SimSpeedClassAttributeRule

SIM(SIM ID)の速度クラスが変更されたらアクションを実行するルール

properties説明
targetSpeedClassSIM がこの速度クラスになった場合にアクションを実行する。例えば targetSpeedClasss1.minimum に設定しておくと、SIM が s1.minimum の速度クラスになった時にアクションを実行できます。

targetSpeedClass が取りうる値は以下のとおりです。

targetStatus の値説明
(未設定)すべての速度クラス
s1.minimum速度クラス s1.minimum
s1.slow速度クラス s1.slow
s1.standard速度クラス s1.standard
s1.fast速度クラス s1.fast
s1.4xfast速度クラス s1.4xfast

サポートされる変数 (この変数は、Action の中で設定すると実行時にその値を取得できます)

サポートされる変数説明
${newSpeedClass}変更後の速度クラス
${oldSpeedClass}変更前の速度クラス

type: SimExpiredRule

SIM(SIM ID)の有効期限が切れた時にアクションを実行するルール

サポートされる変数 (この変数は、Action の中で設定すると実行時にその値を取得できます)

サポートされる変数説明
${newStatus}有効期限が切れた後のステータス
${oldStatus}有効期限が切れる前のステータス

type: SimSubscriptionStatusRule

サブスクリプションの追加を行った場合に OTA の状況によってアクションを実行するルール

properties説明
startedサブスクリプションの追加を開始した場合にアクションを実行
finishedサブスクリプションの追加が完了した場合にアクションを実行
failedサブスクリプションの追加が失敗した場合にアクションを実行
null上記のいずれの場合もアクションを実行

サポートされる変数 (この変数は、Action の中で設定すると実行時にその値を取得できます)

サポートされる変数説明
${imsi}ステータスによって入る値は異なります。
started: plan01s の IMSI
finished: 追加されたサブスクリプションの IMSI
failed: plan01s の IMSI
${primaryImsi}plan01s の IMSI
${subscription}OTA で追加されたサブスクリプション
${otaStatus}サブスクリプション追加のステータス
started: サブスクリプションの追加を開始した状態
finished: サブスクリプションの追加が完了した状態
failed: サブスクリプションの追加が失敗した状態

type: DailyTotalTrafficRule

Operator にひもづく全 SIM の日のデータ通信量合計が一定を超えたらアクションを実行するルール

properties説明
limitTotalTrafficMegaByteデータ量(MiB)がこの量を超えたらアクションを実行する
このルールは、ターゲットとして targetOperatorId の場合のみ有効です。
このルールでは 再評価を行うタイミング(inactiveTimeoutDateConst) として すぐに再評価 (IMMEDIATELY) を指定できません。

type: MonthlyTotalTrafficRule

Operator にひもづく全 SIM の月のデータ通信量合計が一定を超えたらアクションを実行するルール

properties説明
limitTotalTrafficMegaByteデータ量(MiB)がこの量を超えたらアクションを実行する
このルールは、ターゲットとして targetOperatorId の場合のみ有効です。
このルールでは 再評価を行うタイミング(inactiveTimeoutDateConst) として すぐに再評価 (IMMEDIATELY) を指定できません。

4. actionConfigList[]

ruleConfig で指定されたルールが適用された場合に実行されるアクションを指定するための項目です。 例えば、ルールが適用されたタイミングで指定のアドレスにメールを送ったり、SIM の速度クラスを変更したりできます。

{
  "actionConfigList": [
    {
      "type": "アクションのタイプ",
      "properties": { "key": "value" }
    }
  ]
}

ルールと同様、type 属性でどのアクションを使うかを指定できます。 また共通パラメータとして executionDateTimeConst を設定できます。 executionDateTimeConst はそのアクションをいつ実行するかを指定するパラメータです。

4.1. type 一覧

type説明
ChangeSpeedClassActionSIM の SpeedClass を変更するアクション
SendMailActionメールを送るアクション
SendMailToOperatorActionオペレーターの登録メールアドレスにメールを送るアクション
ActivationActionSIM の状態を Active (使用中)にするアクション
DeactivationActionSIM の状態を Inactive (休止中)にするアクション
StandbyActionSIM の状態を Standby (利用開始待ち)にするアクション
ExecuteWebRequestAction指定の URL にリクエストをするアクション
InvokeAWSLambdaActionAWS Lambda を呼び出すアクション
  • SIM の状態を利用開始待ちにする(Standby)アクションの場合、SIM を Standby (利用開始待ち)から 使用中 または 休止 状態に戻す際に、アクティベーション料金が適用される場合があります。詳しくは料金ページをご確認ください。
  • SIM の状態を利用開始待ちにする場合は、再評価のタイミングにご注意ください。繰り返し実行される場合、状態を戻す度に料金が発生するため適宜 inactiveTimeoutDateConst に「再評価を行わない」を指定するなどしてください。

4.2. 各 type で共通した properties

properties説明
executionDateTimeConstすべてのアクションに共通の必須パラメータです。ルールの判定が有効になった際、どのタイミングでアクションを実行するかを指定します。
executionOffsetTime任意のプロパティ。executionDateTimeConst で設定した時間との差分を指定します(単位: 分)。executionDateTimeConst から指定時間(分)の経過後にアクションを実行します。

executionDateTimeConst が取りうる値は以下のとおりです。

説明
IMMEDIATELYすぐに実行
BEGINNING_OF_NEXT_MONTH翌月初
BEGINNING_OF_NEXT_DAY翌日開始時
AFTER_ONE_DAY1 日後
NEVER実行しない

4.3. actionConfigList の type に応じた properties の設定

type: ChangeSpeedClassAction

SIM の SpeedClass を変更するアクション

properties説明
speedClass“s1.slow”,“s1.standard"などの速度クラスを設定する

type: SendMailAction

メールを送るアクション

properties説明
to送付先メールアドレス
titleメールタイトル
messageメール本文

メールのタイトル、および本文には、以下の変数を利用することが可能です。また、これ以外にも、ルールでサポートされる変数を利用できます。

サポートされる変数説明
${simId}対象 SIM の SIM ID
${imsi}対象 SIM の IMSI
${operatorId}対象 SIM を持つ Operator の ID
${date}送信日付(yyyy/m/d)
${year}送信年 (yyyy)
${month}送信月 (m)
${day}送信日 (d)
${tags.[任意のタグ名]}対象 SIM のタグ名に対応する値 (例: tags.name)

type: SendMailToOperatorAction

Operator にメールを送るアクション

properties説明
titleメールタイトル
messageメール本文
メールのタイトル、および本文には、「メールを送るアクション」と同じ変数が利用できます。

type: ActivationAction

SIM の状態を Active (使用中)にするアクション

当 type に応じた properties の設定はありません。

type: DeactivationAction

SIM の状態を Inactive (休止中)にするアクション

当 type に応じた properties の設定はありません。

type: StandbyAction

SIM の状態を Standby (利用開始待ち)にするアクション

当 type に応じた properties の設定はありません。

type: ExecuteWebRequestAction

指定の URL にリクエストをするアクション

properties説明
url接続先 URL とパラメーター
httpMethodGET,POST,PUT,DELETE のいずれか
contentTypeapplication/json などの ContentType
headersヘッダーに設定する値(エスケープされた JSON オブジェクト(hash))(任意)
bodyリクエストボディにセットする文字列(任意) GET,DELETE の場合は設定できません

url,headers および body には、以下の変数を設定できます。またこれ以外にも、ルールでサポートされる変数を利用することが可能です。

サポートされる変数説明
${simId}対象 SIM の SIM ID
${imsi}対象 SIM の IMSI
${operatorId}対象 SIM を持つ Operator の ID
${date}送信日付(yyyy/m/d)
${year}送信年 (yyyy)
${month}送信月 (m)
${day}送信日 (d)
${tags.[任意のタグ名]}対象 SIM のタグ名に対応する値 (例: tags.name)

type: InvokeAWSLambdaAction

AWS Lambda を呼び出すアクション

properties説明
endpointLambda のエンドポイント URL
functionNameLambda ファンクション名 (バージョンやエイリアス指定も可)
accessKey(非推奨。credentialsId を利用してください) アクセスキー
secretAccessKey(非推奨。credentialsId を利用してください) シークレットアクセスキー
credentialsId認証情報 ID
parameter1パラメーター 1(optional)
parameter2パラメーター 2(optional)
parameter3パラメーター 3(optional)
parameter4パラメーター 4(optional)
parameter5パラメーター 5(optional)

認証情報 ID には、認証情報ストアで登録できる AWS 認証情報 または AWS IAM ロール認証情報 の ID を指定します。 パラメーターには任意の文字列 (最大 100 文字)および以下の変数を設定できます。またこれ以外にも、ルールでサポートされる変数(${newSpeedClass} など)を設定できます

サポートされる変数説明
${simId}対象 SIM の SIM ID
${imsi}対象 SIM の IMSI
${operatorId}対象 SIM を持つ Operator の ID
${date}送信日付(yyyy/m/d)
${year}送信年 (yyyy)
${month}送信月 (m)
${day}送信日 (d)
${tags.[任意のタグ名]}対象 SIM のタグ名に対応する値 (例: tags.name)

呼び出し先の Lambda ファンクションには、以下の JSON が渡されます。

{
  "imsi": "対象のimsi",
  "parameter1": "上記のparameter1",
  "parameter2": "上記のparameter2",
  "parameter3": "上記のparameter3",
  "parameter4": "上記のparameter4",
  "parameter5": "上記のparameter5"
}

Lambda ファンクション実装例

exports.handler = function (event, context) {
  console.log("imsi =", event.imsi);
  console.log("value1 =", event.parameter1);
  context.succeed(event.imsi);
};
  • イベントハンドラでは、グループをターゲットにした場合でも ruleConfig で定義された条件を達成したかどうかの判定は SIM ごとに行われ、その都度 Lambda Function が起動されます。どの SIM での通信によって Lambda Function が呼び出されたのかは、Lambda に渡される event オブジェクトに含まれている IMSI から判別できます。
  • イベントハンドラの条件を達成したタイミングで SIM が所属するグループに該当する SIM 全体にアクションを行いたい場合には、イベントハンドラから Lambda Function に引き渡される JSON の parameter にグループ ID を含めておき、Lambda Function 側で SORACOM API を実行して該当の SIM を取得するような実装を検討してください。

5. 設定サンプル

以下に掲載する構文はサンプルです。実際にお使いになる場合は、お客様自身でテストを実施ください。

5.1. SIM の速度変更時に、ExecuteWebRequestAction で Slack に通知するサンプル

{
  "targetOperatorId": "OPXXXXXXXXXX",
  "name": "SpeedClass",
  "ruleConfig": {
    "type": "SimSpeedClassAttributeRule",
    "properties": {
      "inactiveTimeoutDateConst": "IMMEDIATELY"
    }
  },
  "status": "active",
  "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"
      }
    }
  ]
}

5.2. ChangeSpeedClassAction, SendMailAction を利用し、1 日 100M 利用で 1 日後まで速度制限しメール通知するサンプル

{
  "targetImsi": "xxxxxxxxxxxx",
  "name": "100MiBリミット",
  "description": "1日100MiB利用で、1日後まで速度制限",
  "ruleConfig": {
    "type": "SubscriberDailyTrafficRule",
    "properties": {
      "inactiveTimeoutDateConst": "AFTER_ONE_DAY",
      "limitTotalTrafficMegaByte": "100"
    }
  },
  "status": "active",
  "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": "速度制限を解除します"
      }
    }
  ]

5.3. InvokeAWSLambdaAction を利用し、累積 3GB 利用時に AWS Lambda 呼び出しするサンプル

累積でのイベントのため、一度のみの評価を行う NEVERinactiveTimeoutDateConst に設定します。

{
  "targetOperatorId": "OPXXXXXXXXX",
  "name": "3GBリミット",
  "description": "累積3GB利用時",
  "ruleConfig": {
    "properties": {
      "inactiveTimeoutDateConst": "NEVER",
      "limitTotalTrafficMegaByte": 3000
    },
    "type": "CumulativeTrafficRule"
  },
  "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"
    }
  ]
}

5.4. InvokeAWSLambdaAction を利用し、速度クラス変更時に AWS Lambda で履歴を保存するサンプル

速度クラス変更のルールで利用できる変数(${newSpeedClass}${oldSpeedClass} )を使用します。 指定した AWS Lambda に変更前後の速度クラスがパラメーターとして渡されるため、Lambda のプログラムで DB などに履歴保存します。

{
  "targetOperatorId": "OPXXXXXXXXX",
  "name": "SpeedClass変更",
  "description": "SpeedClass変更時に実行",
  "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"
    }
  ]
}