🍣

SORACOM で特定 SIM のセッションを任意のタイミングで安全に切断する

2024/01/15に公開

SORACOM の仕様制限と対策

万能に思えるSORACOMですが、以下の制限があります。

ソラコムでは無通信の状態が 1 時間ほど続くとセッションを切断(タイムアウト)する仕様があります。
(こちらの仕様は今後変更となる可能性もございます。あらかじめご了承ください。)
無通信の状態が続くと通信が切れるのはなぜですか? – SORACOM サポートサイト

常時接続を前提とした機器の場合は上記ページを読んで対策しておきましょう。

問題はテストです。
1時間もぼーっと待つのでしょうか?
それともアンテナ抜きますか?

そんな必要はありません。
そう、SORACOMならね!

はい、ユーザーコンソールや SORACOM CLI を利用すればセッションを切断できます。
特定の SIM の 3G/LTE セッションを切断できますか? – SORACOM サポートサイト

SORACM CLI を使えばできそうです。

安全に使うための準備

便利な SORCOM CLI ですが、うっかり別の IMSI を指定したら切断出来てしまいそうです。
そんなときは特定のSIMしか操作できない権限のユーザを作ってやりましょう。

幸い設定のテンプレートに似たようなのがあったので、deleteSimSession に限定してやります。
複数のSIMを使うなら、そのぶん並べましょう。
conditionSIM ID を複数指定できたらもうちょっとスマートに書けますが調べてません。

特定の SIM ID に対するセッション削除のみを許可
{
  "statements": [
    {
      "api": [
        "Sim:deleteSimSession"
      ],
      "effect": "allow",
      "condition": "pathVariable('sim_id') == 'Input your SIM ID 1'"
    },
    {
      "api": [
        "Sim:deleteSimSession"
      ],
      "effect": "allow",
      "condition": "pathVariable('sim_id') == 'Input your SIM ID 2'"
    }
  ]
}

SORACOM CLI でやる

やっと準備ができました。
あとは SORACOM CLI を使って 以下のコマンドを実行するだけです。

soracom sims delete-session --sim-id ${sim_id}

他の用途

ここで書いた用途以外にも、速度クラスの変更などをすぐに反映させるために使う場合もあるようです。

しかし、セッションごとに独立している設定についてはAPIコールの後即時反映はされず、次のセッション開始時から適用されるものがあります。
セッション切断APIの公開とその使いどころ - SORACOM公式ブログ

Discussion