【AWS IoT Events】料金がすごく高くなってしまう件への対応
【AWS IoT Events】料金がすごく高くなってしまう件への対応
結論
- デバイスの数
- デバイス数が増えれば増えるほど、料金は高くなります。
- 理由はIoT Eventsに入り込むメッセージ数が多くなるからです。
- 例えば、一つのデバイスが100メッセージIoT Eventsにメッセージを送っていたとします。
- 2台になれば200メッセージ、10台になれば1000メッセージです。
- 料金も2倍・10倍とふくらみます。
- IoTイベントへ入り込むメッセージの数
- IoT Eventsへ入り込むメッセージの数で、料金は決まっています。
- アラートモデルを使ってない場合は、アラートは関係ないです。
- IoT Eventsに入り込むメッセージは、以下の方法で減らすことができます。
- 通信頻度を下げる
- これはもう言わずもがなですが、1秒ごとにメッセージが来るようにしているよりも、10秒ごとにメッセージが来るようにした方が、メッセージ数を下げることができます。
- IoT CoreのルールでWhere句を使って、流れ込むメッセージを減らす
- これは、例えばWhere temperature > 50とかいうように、IoT Coreのルールで、流れ込むメッセージ量を減らしてあげるということです。
- 一つのデバイスに紐づくステートマシンの数
- ひとつのIoTデバイスに紐づくステートマシンの数が影響します。
- 理由はステートマシンが別だと、それぞれのステートマシンにメッセージを流し込む必要があるからです。
- 例えば、AとBのステートマシンがあったとして、それぞれに同じ情報を流し込んでいたとした場合を考えます。
- Aだけに流し込むのと比べるとBにも同じようにメッセージを入れないといけないので、2倍の量をメッセージとして処理することになります。
- メッセージサイズ
- これは小さくできるなら、小さくしてくださいという話です。
- 行数などで決まります。
- あとは文字列、Json形式ですね。
- 基本はJson形式にしておけば大丈夫かと思います。
- メッセージによってトリガーされるアクションの数
- メッセージがIoT Eventsに流れ込んだ時に、そのメッセージによって、トリガーされるアクションが少ない方が、料金は抑えられます。
- 例えば、エラーメッセージをIoT Eventsが受け取って、ステートマシンから、エラーメッセージを発出するといったようなアクションですね。
- できることは、エラー状態になったタイミングのみエラー送信して、それ以外の通常に戻ったタイミングなどは通知しないといったことができるかと思います。