はじめに
同一AWS アカウントでIoT MQTTコネクションの管理を分けたいことがあるのですが、あまり情報が無かったので記事にします。
IoT Ruleでサービス毎にコネクションのサブスクライブすることをゴールとします。
MQTTコネクション
AWSからAndroid SDKが出ているのでそちらを使用しています。
Androidで接続する場合、MQTT接続する際にAWSIotMqttManagerを定義します。
public AWSIotMqttManager(String mqttClientId, Region region, String accountEndpointPrefix)
regionとaccountEndpointPrefixは固定なので、こちらで好きな値を入れることはできません。
mqttClientIdに一意なIDを入れ、AWS IoTのMQTTテストクライアントでテストします。
$aws/events/presence/connected/+でサブスクライブし、AndroidからMQTT接続を行うと接続情報が取得できます。
prefix付MQTTコネクション
mqttClientIdにprefixを付けます。
var mqttClientId = "test/${id}"
$aws/events/presence/connected/test/+でサブスクライブし、MQTT接続します。
ちゃんと取得できてます。
$aws/events/presence/connected/+の方には出てきませんでした。
mqttClientIdにprefixを付けることでサービス毎にコネクションの管理ができそうですね!
補足
mqttClientIdはIoT CoreのDevice IDを入れると後々どのデバイスの接続情報かわかるのでおすすめです。