AWS IoT Eventsの探知機モデルを更新した際のディテクター状態を確認する
AWS IoT Eventsで作成した探知機モデルを更新するとき、ディテクター状態の初期化について確認されます。
そこで思ったのです。探知機モデルを更新したあと、次のメッセージが来るまでに取得したディテクターの状態は何になっているんだろう?と。
まずは現状を確認する
以前に作成した探知機モデルを使います。 ここには2つのディテクターが存在しており、状態は2つともofflineになっています。
aws iotevents-data list-detectors \ --detector-model-name SampleHeartbeatModel
上記コマンドの実行結果が次になっています。
{ "detectorSummaries": [ { "detectorModelName": "SampleHeartbeatModel", "keyValue": "d1234", "detectorModelVersion": "1", "state": { "stateName": "offline" }, "creationTime": 1595910461.44, "lastUpdateTime": 1595931293.428 }, { "detectorModelName": "SampleHeartbeatModel", "keyValue": "d7777", "detectorModelVersion": "1", "state": { "stateName": "offline" }, "creationTime": 1595911196.103, "lastUpdateTime": 1595931297.882 } ] }
探知機モデルを更新する
探知機モデルを開き、online状態のOnEnterであるInit_timer
について、ハートビート用のタイマーを5分から3分に変更します。
続いて、探知機モデルを保存して発行します。
このタイミングで冒頭の確認が行われます。「はい」を押して続行します。
探知機モデルを公開した直後のディテクターの様子
ディテクターの状態は、offlineのまま変更はありません。
コマンド実行した結果も同じです。
{ "detectorSummaries": [ { "detectorModelName": "SampleHeartbeatModel", "keyValue": "d1234", "detectorModelVersion": "1", "state": { "stateName": "offline" }, "creationTime": 1595910461.44, "lastUpdateTime": 1595931293.428 }, { "detectorModelName": "SampleHeartbeatModel", "keyValue": "d7777", "detectorModelVersion": "1", "state": { "stateName": "offline" }, "creationTime": 1595911196.103, "lastUpdateTime": 1595931297.882 } ] }
ハートビートを送信したあとのディテクターの様子
d1234
のデバイスについて、ハートビート送信します。
この状態でディテクターの様子を確認すると、d1234
のみがonline状態になっていました(期待通り)。
コマンドを実行して一覧取得すると、d1234
のみ更新されていました。detectorModelVersion
も2
になっています。
{ "detectorSummaries": [ { "detectorModelName": "SampleHeartbeatModel", "keyValue": "d1234", "detectorModelVersion": "2", "state": { "stateName": "online" }, "creationTime": 1596157131.895, "lastUpdateTime": 1596157131.896 }, { "detectorModelName": "SampleHeartbeatModel", "keyValue": "d7777", "detectorModelVersion": "1", "state": { "stateName": "offline" }, "creationTime": 1595911196.103, "lastUpdateTime": 1595931297.882 } ] }
ただし、初期化されたという性質上、「デバイス切断状態が復旧しました」というメールは届いていません。 (offline状態のOnExitにイベントが存在するため)
まとめ
探知機モデルを更新したあと、次のメッセージが来るまでに取得したディテクターの状態は「変化しない」が答えでした。
探知機モデル | d1234 | d7777 |
---|---|---|
更新前 | offline(v1) | offline(v1) |
更新直後 | offline(v1) | offline(v1) |
d1234ハートビート送信後 | online(v2) | offline(v1) |
これらの特徴を踏まえて探知機モデルを新規作成・更新していきたいですね。