AWS IoT
AWS IoTコンポーネント
メッセージブローカー
プロトコル | 認証 | Port | ALPN ProtocolName | メッセージ |
---|---|---|---|---|
MQTT | X.509クライアント証明書 | 8883,443 | x-amzn-mqtt-ca | subscribe, publish |
HTTPS | X.509クライアント証明書 | 8443,443 | x-amzn-http-ca | publish |
HTTPS | SigV4 | 443 | 該当なし | publish |
MQTT over WebSocket | SigV4 | 443 | 該当なし | subscribe,publish |
-
ALPNによりMQTTをport443で利用可能
- https://aws.amazon.com/jp/blogs/news/mqtt-with-tls-client-authentication-on-port-443-why-it-is-useful-and-how-it-works/
- ALPN (Application Layer Protocol Negotiation): RFC7301
- クライアントがALPN拡張をサポートしていることが前提
- opensslは1.0.2以降対応 openssl-1.0.2-notes
-
- MQTT version 3.1.1に基づく(下記例外)
- 仕様からの逸脱あり
- QoS0でメッセージが複数回(0以上)配信される場合がある。(DUPフラグ未設定)
- Q0S2は未サポート。QoS2のリクエストはACK(PUBACK or SUBACK)を応答しない。
- 新規subscribeに対するラストメッセージの保持(retain)はサポートされない。
- 接続単位の永続セッション(cleanSessionフラグ)はサポート
- willメッセージに関する制限記述は無いのでサポート
-
対応するMQTTデバイス
-
デバイスを設定する
- 専用デバイスだけでなく、MQTTクライアントも対応と読める
-
デバイスを設定する
デバイスシャドウサービス
- デバイスシャドウ:デバイスの現在の状態情報の保存と取得に使用されるJSONドキュメント
- デバイスシャドウサービス:AWS IoTに接続された各デバイスのシャドウを管理するサービスで、MQTTまたはHTTPで各デバイスの状態(接続状態に関わらず)の取得設定を行うことができる。
料金
- AWS IoT Core料金
- 以下、東京リージョン前提に記述(他のリージョンに比較して割高)
接続料金
- 1デバイスのAWS IoT Coreへの接続時間に応じて1分単位で発生
- 0.096 USD (100万分あたり)
メッセージング料金
- 1デバイスとAWS IoT Coreの間で「送信された」メッセージ数により計算される。
- publish, subscribeは送信メッセージ。ACKはメッセージに含めない。
- MQTT-keepaliveは対象外
- メッセージ数は、5KB毎に増加。(ex: 8KB -> 2メッセージ数)
- メッセージ100万件あたり
- メッセージ10億件まで:1.20 USD
- ~40億件まで:0,96 USD
- 50億権以上:0.84 UDD
デバイスシャドウとレジストリ
- デバイスシャドウやレジストリデータに対するアクセス、又は変更のオペレーション数によって発生
- デバイスシャドウ自体はThings登録時に規定で作成される。管理アプリケーションやAWS CLIからデバイスシャドウサービスにアクセス(Shadow ARNへのアクセス)しない限り課金は発生しない。
- Shadow ARNはThings登録時に作成される。(ex. arn:aws:iot:ap-northeast-1:440364497558:thing/device_mosquitto_windows10)
- オペレーション数は、デバイスシャドウまたはレジストリのレコードサイズ1KB単位で計算される。
- 1.50 USD (オペレーション 100万件あたり)
ルールエンジン
- ルールによるサービス(S3, DynamoDB, Kinesis)ルーティングで発生
- ルールがトリガーされる度に計算される。
- 0.18UDD (トリガーされたルール100万件あたり/実行されたアクション100万件あたり)