IoT向けデータ通信サービスを提供しているSORACOMさんはAPIを公開されていて、通信速度や使用状況などを取得することができます。
夜間は通信速度にかかわらず値段が一定なので、今回は夜になったら通信速度アップさせることを想定しAWS Lambda(Python)でAPIを操作してみます。
SORACOMのSDKはRubyとGo (beta)が提供されていますが、非公式ながらPythonのSDKがあったのでこれを使います。
Lambdaで外部ライブラリを使う場合、ZIP化しないといけないので -t をつけて現在のディレクトリにインストールします。
pip install requests -t .
pip install soracom -t .
以下のようなコードを書きます。
SORACOM AirのSIM一覧を取得し、速度をs1.fastに変更しています。
コードをライブラリをまとめてzipにします。
zip -r function.zip *
作成したzipファイルをLambdaにPythonスクリプトとしてアップロードします。
テスト実行してみます。
START RequestId: 1bcdc080-cf45-11e5-8890-db7a0d32535f Version: $LATEST
Received event: {“key3”: “value3”, “key2”: “value2”, “key1”: “value1”}
[{u’speedClass’: u’s1.fast’, u’imsi’: u’44010xxxxxxxxxx’}]
END RequestId: 1bcdc080-cf45-11e5-8890-db7a0d32535f
REPORT RequestId: 1bcdc080-cf45-11e5-8890-db7a0d32535f Duration: 919.02 ms Billed Duration: 1000 ms Memory Size: 128 MB Max Memory Used: 31 MB
速度がスクリプト中で指定したs1.fastに変更されました。あとは速度を落とすLambda Functionも用意して、Scheduled Eventで定期的に実行させればよさそうです。