LoginSignup
16
15

More than 5 years have passed since last update.

SORACOMのコマンドラインツールを使ってみた

Last updated at Posted at 2015-10-02

ひと通り触ってみました。

※私の勘違いやツールのバグなどについては随時修正します。

1. インストール

検証環境

  • Amazon Linux 2015.09
  • ruby 2.0.0p647 (2015-08-18) [x86_64-linux]

インストール

コマンド
sudo yum -y install ruby-devel

gemをインストール

コマンド
gem install soracom

コマンドが利用できることを確認

SORACOM beamはsoracom groupで設定可能です。

コマンド
soracom
結果
Commands:
  soracom auth                     # test authentication
  soracom complete                 # command list for shell completion
  soracom event_handler <command>  # Event Handler related operations
  soracom group <command>          # Group related operations
  soracom help [COMMAND]           # Describe available commands or one speci...
  soracom sim <command>            # Subscriber related operations(alias)
  soracom stats <command>          # Stats related operations
  soracom subscriber <command>     # Subscriber related operations
  soracom support                  # open support site
  soracom version                  # print version

コマンドの補間が出来るようにする

コマンド
EVAL='eval "$(soracom complete)"'
echo ${EVAL} >> ~/.bashrc
source ~/.bashrc

2. 認証情報の設定

認証情報を設定

コマンド
export SORACOM_EMAIL='soracom@example.com'
export SORACOM_PASSWORD='********************'

認証情報が設定されていることを確認

コマンド
soracom auth
結果
testing authentication...
authentication succeeded.
apiKey: ********-****-****-****-************
operatorId: OP**********

3. バージョン確認

コマンド
soracom version
結果
Soracom API tool v1.0.2

4. サポートサイトへのURLを出力

サポートサイトへのURLが出力されます。
(SORACOMさんはzendesk使ってるんですねー。)
(URLは省略しています。)

コマンド
soracom support
結果
open following URL in your browser.
https://soracom.zendesk.com/********/*********

(実際はもっと長い)

5. グループの管理

グループの作成

コマンド
soracom group create
結果
{
  "operatorId": "OP**********",
  "groupId": "********-****-****-****-************",
  "createdAt": 1443866271291,
  "lastModifiedAt": 1443866271291,
  "configuration": {
  },
  "tags": {
  },
  "createdTime": 1443866271291,
  "lastModifiedTime": 1443866271291
}

グループ名を設定しないと、ユーザコンソールでSIMをグループに所属させることができません。
(なぜ作成時に必須としてないのかな?)
コマンドラインツールを使用すれば、名前が設定されていないグループにSIMを所属させることができます。

グループ名を設定

コマンド
soracom group update_tags --group-id=********-****-****-****-************ --tags='[{"tagName":"name","tagValue":"hogehoge"}]'
結果
{
  "operatorId": "OP**********",
  "groupId": "********-****-****-****-************",
  "createdAt": 1443866271291,
  "lastModifiedAt": 1443867218115,
  "configuration": {
  },
  "tags": {
    "name": "hogehoge"
  },
  "createdTime": 1443866271291,
  "lastModifiedTime": 1443867218115
}

グループの一覧を表示

コマンド
soracom group list
結果
[
  {
    "operatorId": "OP**********",
    "groupId": "********-****-****-****-************",
    "createdAt": 1443792381541,
    "lastModifiedAt": 1443792381541,
    "configuration": {
    },
    "tags": {
      "name": "********"
    },
    "createdTime": 1443792381541,
    "lastModifiedTime": 1443792381541
  }
]

6. SIMの設定

設定するSIMの指定はIMSIで行う。

SIMの登録は、soracom sim register --imsi=*************** --registration-secret=*****で可能

解約も可能ですが、SIMが利用できなくなるのでここでは行いません。

SIMの一覧を表示

コマンド
soracom sim list
結果
[
  {
    "imsi": "***************",
    "msisdn": "81**********",
    "ipAddress": null,
    "apn": "soracom.io",
    "type": "s1.minimum",
    "groupId": "********-****-****-****-************",
    "createdAt": 1443792383749,
    "lastModifiedAt": 1443793730633,
    "expiredAt": null,
    "terminationEnabled": false,
    "status": "inactive",
    "tags": {
      "name": "Nobuhiro Nakayama"
    },
    "sessionStatus": null,
    "speedClass": "s1.minimum",
    "moduleType": "mini",
    "plan": 0,
    "expiryTime": null,
    "operatorId": "OP**********",
    "createdTime": 1443792383749,
    "lastModifiedTime": 1443793730633
  }
]

アクティベート

コマンド
soracom subscriber activate --imsi=***************
結果
[
  {
    "imsi": "***************",
    "msisdn": "81**********",
    "ipAddress": null,
    "apn": "soracom.io",
    "type": "s1.minimum",
    "groupId": "********-****-****-****-************",
    "createdAt": 1443792383749,
    "lastModifiedAt": 1443802419168,
    "expiredAt": null,
    "terminationEnabled": false,
    "status": "active",
    "tags": {
      "name": "Nobuhiro Nakayama"
    },
    "sessionStatus": null,
    "speedClass": "s1.minimum",
    "moduleType": "mini",
    "plan": 0,
    "expiryTime": null,
    "operatorId": "OP**********",
    "createdTime": 1443792383749,
    "lastModifiedTime": 1443802419168
  }
]

無効化

コマンド
soracom subscriber deactivate --imsi=***************
結果
[
  {
    "imsi": "***************",
    "msisdn": "81**********",
    "ipAddress": null,
    "apn": "soracom.io",
    "type": "s1.minimum",
    "groupId": "********-****-****-****-************",
    "createdAt": 1443792383749,
    "lastModifiedAt": 1443802758241,
    "expiredAt": null,
    "terminationEnabled": false,
    "status": "inactive",
    "tags": {
      "name": "Nobuhiro Nakayama"
    },
    "sessionStatus": null,
    "speedClass": "s1.minimum",
    "moduleType": "mini",
    "plan": 0,
    "expiryTime": null,
    "operatorId": "OP**********",
    "createdTime": 1443792383749,
    "lastModifiedTime": 1443802758241
  }
]

有効期限を設定

(時刻はエポックミリ秒で表記)

コマンド
soracom sim set_expiry_time --expiry-time=1447945200000 --imsi=***************
結果
[
  {
    "imsi": "***************",
    "msisdn": "81**********",
    "ipAddress": null,
    "apn": "soracom.io",
    "type": "s1.minimum",
    "groupId": "********-****-****-****-************",
    "createdAt": 1443792383749,
    "lastModifiedAt": 1443805447867,
    "expiredAt": 1447945200000,
    "terminationEnabled": false,
    "status": "inactive",
    "tags": {
      "name": "Nobuhiro Nakayama"
    },
    "sessionStatus": null,
    "speedClass": "s1.minimum",
    "moduleType": "mini",
    "plan": 0,
    "expiryTime": 1447945200000,
    "operatorId": "OP**********",
    "createdTime": 1443792383749,
    "lastModifiedTime": 1443805447867
  }
]

帯域を変更

コマンド
soracom sim update_speed_class --imsi=*************** --speed-class=s1.minimum
結果
[
  {
    "imsi": "***************",
    "msisdn": "81**********",
    "ipAddress": null,
    "apn": "soracom.io",
    "type": "s1.minimum",
    "groupId": "********-****-****-****-************",
    "createdAt": 1443792383749,
    "lastModifiedAt": 1443804583320,
    "expiredAt": null,
    "terminationEnabled": false,
    "status": "inactive",
    "tags": {
      "name": "Nobuhiro Nakayama"
    },
    "sessionStatus": null,
    "speedClass": "s1.minimum",
    "moduleType": "mini",
    "plan": 0,
    "expiryTime": null,
    "operatorId": "OP**********",
    "createdTime": 1443792383749,
    "lastModifiedTime": 1443804583320
  }
]

タグの追加/タグの更新

コマンド
soracom subscriber update_tags --imsi=*************** --tags=hogehoge:fugafuga
結果
[
  {
    "imsi": "***************",
    "msisdn": "81**********",
    "ipAddress": null,
    "apn": "soracom.io",
    "type": "s1.minimum",
    "groupId": null,
    "createdAt": 1443792383749,
    "lastModifiedAt": 1443806667123,
    "expiredAt": null,
    "terminationEnabled": false,
    "status": "inactive",
    "tags": {
      "name": "Nobuhiro Nakayama",
      "hogehoge": "fugafuga"
    },
    "sessionStatus": null,
    "speedClass": "s1.minimum",
    "moduleType": "mini",
    "plan": 0,
    "expiryTime": null,
    "operatorId": "OP**********",
    "createdTime": 1443792383749,
    "lastModifiedTime": 1443806667123
  }
]

タグの削除

コマンド
soracom subscriber delete_tag --imsi=*************** --tag-name=hogehoge
結果
[
  {
    "imsi": "***************",
    "result": "success"
  }
]

所属グループへの参加/所属グループの変更

コマンド
soracom subscriber set_group --group-id=********-****-****-****-************ --imsi=***************
結果
{
  "imsi": "***************",
  "msisdn": "81**********",
  "ipAddress": null,
  "apn": "soracom.io",
  "type": "s1.minimum",
  "groupId": "********-****-****-****-************",
  "createdAt": 1443792383749,
  "lastModifiedAt": 1443806430004,
  "expiredAt": null,
  "terminationEnabled": false,
  "status": "inactive",
  "tags": {
    "name": "Nobuhiro Nakayama"
  },
  "sessionStatus": null,
  "speedClass": "s1.minimum",
  "moduleType": "mini",
  "plan": 0,
  "expiryTime": null,
  "operatorId": "OP**********",
  "createdTime": 1443792383749,
  "lastModifiedTime": 1443806430004
}

所属グループの解除

コマンド
soracom subscriber unset_group --imsi=***************
結果
{
  "imsi": "***************",
  "msisdn": "81**********",
  "ipAddress": null,
  "apn": "soracom.io",
  "type": "s1.minimum",
  "groupId": null,
  "createdAt": 1443792383749,
  "lastModifiedAt": 1443806445164,
  "expiredAt": null,
  "terminationEnabled": false,
  "status": "inactive",
  "tags": {
    "name": "Nobuhiro Nakayama"
  },
  "sessionStatus": null,
  "speedClass": "s1.minimum",
  "moduleType": "mini",
  "plan": 0,
  "expiryTime": null,
  "operatorId": "OP**********",
  "createdTime": 1443792383749,
  "lastModifiedTime": 1443806445164
}

7. データ使用量の確認

データ通信の使用量を確認

(全く通信していない状態なので、後日結果例を追記予定)

コマンド
soracom stats get_air_usage --imsi=***************
コマンド
[

]

8. 監視

監視設定はアカウント共通・グループ共通・SIM個別など、適用範囲を調整可能です。
(コマンドでの作成方法がよく分からなかったので、後日修正)

"targetTag"や"targetGroupId"で適用先を制御するのがポイントっぽい?

監視設定を確認

Webのコンソールで設定を有効化したり無効化したりを繰り返すと、設定が

コマンド
soracom event_handler list
結果
[
  {
    "handlerId": "********-****-****-****-************",
    "targetImsi": null,
    "targetOperatorId": "OP**********",
    "targetTag": null,
    "targetGroupId": null,
    "name": "Prefixed event handler",
    "description": null,
    "ruleConfig": {
      "type": "DailyTrafficRule",
      "properties": {
        "inactiveTimeoutDateConst": "BEGINNING_OF_NEXT_DAY",
        "limitTotalTrafficMegaByte": "5"
      }
    },
    "status": "active",
    "actionConfigList": [
      {
        "type": "SendMailToOperatorAction",
        "properties": {
          "executionDateTimeConst": "IMMEDIATELY",
          "message": "対象SIM ${imsi} \n\n利用状況を確認してください。",
          "title": "SIMの日次通信量が5MiBを超えています"
        }
      }
    ]
  },
  {
    "handlerId": "********-****-****-****-************",
    "targetImsi": null,
    "targetOperatorId": "OP**********",
    "targetTag": null,
    "targetGroupId": null,
    "name": "Prefixed event handler",
    "description": null,
    "ruleConfig": {
      "type": "DailyTrafficRule",
      "properties": {
        "inactiveTimeoutDateConst": "BEGINNING_OF_NEXT_DAY",
        "limitTotalTrafficMegaByte": "4"
      }
    },
    "status": "active",
    "actionConfigList": [
      {
        "type": "ChangeSpeedClassAction",
        "properties": {
          "speedClass": "s1.minimum",
          "executionDateTimeConst": "IMMEDIATELY"
        }
      },
      {
        "type": "ChangeSpeedClassAction",
        "properties": {
          "speedClass": "s1.standard",
          "executionDateTimeConst": "BEGINNING_OF_NEXT_DAY"
        }
      },
      {
        "type": "SendMailToOperatorAction",
        "properties": {
          "executionDateTimeConst": "IMMEDIATELY",
          "message": "対象SIM ${imsi} \n\nSIMの日次通信量が4MiBに到達したので通 信速度が制限されました",
          "title": "速度制限のお知らせ"
        }
      },
      {
        "type": "SendMailToOperatorAction",
        "properties": {
          "executionDateTimeConst": "BEGINNING_OF_NEXT_DAY",
          "message": "対象SIM ${imsi} \n\n速度制限期間が終わったので、速度が元に戻りました",
          "title": "速度制限解除のお知らせ"
        }
      }
    ]
  }
]

監視設定の削除

コマンド
soracom event_handler delete --handler-id=********-****-****-****-************
結果
{
  "result": "success"
}

9. SORACOM beam

設定の確認

ユーザーコンソールから設定した情報を表示します。
(設定はテキトーですw)

コマンド
soracom group list --group-id=********-****-****-****-************
結果
[
  {
    "operatorId": "OP**********",
    "groupId": "********-****-****-****-************",
    "createdAt": 1443866271291,
    "lastModifiedAt": 1443868296406,
    "configuration": {
      "SoracomBeam": {
        "http://beam.soracom.io:8888/": {
          "name": "facebook",
          "destination": "https://www.facebook.com/",
          "enabled": true,
          "addSubscriberHeader": false,
          "customHeaders": {
          },
          "addSignature": false
        }
      }
    },
    "tags": {
      "name": "hogehoge"
    },
    "createdTime": 1443866271291,
    "lastModifiedTime": 1443868296406
  }
]
16
15
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
16
15