はじめに
とあるデバイスのなかで稼働する特定のミドルウェアの起動状態を AWS IoT の Shadow で管理している。
middleware.power
がon
のときにサービス起動middleware.power
がoff
のときにサービス停止
といった感じ。ちなみにデバイスのなかに、AWS IoT のエージェントが常駐している。 下記のようなイメージ。
非商用のデモ用デバイスで、使う機会はそんなになく、あまり厳密な管理はしていないのだけど、諸用でちょこちょこ再起動が必要になってきた。で、再起動には device shadow の middleware.power
をoff
してから on
するといいんだけど、AWS IoT の管理画面をちょこちょこいじるのは面倒になってきたので、手元のPCから操作ちょっとしたスクリプトを書こうと思った。
アプローチ
aws iot-data コマンド
$aws iot-data update-thing-shadow help ~ SYNOPSIS update-thing-shadow --thing-name <value> --payload <value> outfile <value> OPTIONS --thing-name (string) The name of the thing. --payload (blob) The state information, in JSON format. outfile (string) Filename where the content will be saved OUTPUT payload -> (blob) The state information, in JSON format.
partial update は出来ないようだ。なので、divice shadow の一部分を更新したい、というときは、一度 aws iot-data get-thing-shadow
でshadow の全文を取得し、書き換えてから改めてupdate-thing-shadow
で全文を書き換えるということになる。なんか嫌だけど、そのくらい割り切った方がスッキリしていていいかもしれない。
実装
あとで書く
エンドポイント
ちなみに、AWS IoT はリージョンサービスで、エンドポイントはリージョン毎に異なる。 ただし、リージョンの前にくるサブドメインは、1 ルートアカウントにつき1つになる。