Edited at

AWS LambdaのSchedule Eventを使ってSORACOM Airのステータスをコントロールしてみる

More than 3 years have passed since last update.

AWSのグローバルイベントre:Invent中にAWS Lambdaに様々な機能が追加されました。

中でもPython2.7対応やSchedule Eventは様々な方に影響があったのではないでしょうか。

Schedule Eventは、最小5分から設定して時刻イベントとしてLambda Functionを実行することができます。

時刻指定の方法は、CRONの表現で設定できます。

cron(Minutes Hours Day-of-month Month Day-of-week Year)

例えば、

毎日10:00amに実行したい場合

cron(0 10 * * ? *)

月曜日から金曜日の6:00pmに実行したい場合

cron(0 18 ? * MON-FRI *)

ちなみに、時刻はすべてUTCでの指定になります。

この機能は、CRONで実行している"よくある"バッチシステムで活用できる画期的な機能だと思っております。

もちろん、IoTの世界でもこの機能は使えます。

例えば、エネルギーシステムで、日の出から日の入りまでの間だけデータをクラウドにあげて夜は無駄な通信を抑制することが可能です。これをAPIで実行できるのがSoracomのパワーだと思います。

そこで、Lambdaの新機能(Python2.7とSchedule Event)とSoracom APIを使ってみます。

AWS Lambda

Pythonのコードは以下のとおりです。

import requests

import json

def handler(event, context):
data = {}

headers = {'Content-Type': 'application/json'}
payload = {'email': 'YOUR MAIL ADDRESS', 'password': 'YOUR PASSWORD'}
res = requests.post("https://api.soracom.io/v1/auth", headers=headers,data=json.dumps(payload)).text
data = json.loads(res)
apiKey = data['apiKey']
token = data['token']

print('apiKey: ' + apiKey +'/' + 'Token: ' + token)

headers = {
'Accept': 'application/json',
'X-Soracom-Api-Key': apiKey,
'X-Soracom-Token': token
}

res = requests.get("https://api.soracom.io/v1/subscribers?tag_value_match_mode=exact",headers=headers,data=json.dumps(payload)).text
data = json.loads(res)
imsi = data[0]['imsi']
status = data[0]['status']
url = 'https://api.soracom.io/v1/subscribers/' + imsi + '/'

if status == 'inactive':
url = url + 'activate'
print 'URL: ' + url
res = requests.post(url,headers=headers).text
else:
url = url + 'deactivate'
print 'URL: ' + url
res = requests.post(url,headers=headers).text

data = json.loads(res)
return data['status']

現状のステータスに応じてActivateとInactivateにするとてもシンプルなものです。

マネジメントコンソールで、Python2.7を選択してzip化したファイルをアップロードします。

1-1.png

Event sourcesタブを選択します。

2.png

Add event sourceをクリックして、Event source typeからScheduled Eventを選択します。

必要な情報を入力します。今回は、テストとして5分単位で実行するようにしてます。

4.png

これで設定は終わりです。

実行されているかSoracomコンソールで確認してみましょう。

最初は、Inactiveだったのですが、5分後は、Activeに変わってます。

5−1.png

6−1.png


最後に

APIでコントロールできるキャリア、とてもパワフルであることを実感できます。

また、AWS LambdaにSchedule Eventはとてもインパクトが有ると思ってます。


免責

こちらは個人の意見で、所属する企業や団体は関係ありません。