AWS IoT Core Fleet Provisioning の Thing Name の重複登録
こんにちは!コンサルティング部のくろすけです!
IoT Core では、「モノの名前」は同一アカウントの同一リージョンごとに一意である必要があります。
マネジメントコンソールでは、モノの名前に重複があると登録時にエラーとなりますが、Fleet Provisioning ではどうなるかを確認してみました。
結論
- Fleet Provisioning では、モノの名前が重複していても
RegisterThingは成功する - ただし、新規でモノが登録されるのではなく、既存のモノが上書きされる
概要
今回検証には、下記で紹介したスクリプトを使用しています。
このスクリプト(Fleet Provisioning)は主に下記のような処理を行って、デバイスを自動登録します。
- claim 証明書を使って AWS IoT Core の MQTT エンドポイントに接続
CreateKeysAndCertificateで新しいデバイス証明書・秘密鍵・certificateOwnershipTokenを取得RegisterThingで provisioning template に従って Thing や証明書アタッチなどを行いモノを登録- MQTT 接続を切断
つまり、モノの名前が重複した場合には RegisterThing が失敗するのではと考えました。
やってみた
1. ユニークな名前のモノの登録
まず、先ほどのスクリプトを使用して、ユニークな名前のモノを登録します。


2. 重複した名前のモノを登録
次に、先ほどのスクリプトを使用して、重複した名前のモノを登録(設定をそのまま、スクリプトを再実行)します。
モノの名前が重複しているのに、スクリプト自体は成功しました。

が、マネジメントコンソールから確認すると、やはり重複して登録はされていない...

スクリプトのバグかと思いましたが、証明書の欄を見て理由がわかりました。
証明書が追加されています。つまり、RegisterThing では既存のモノを上書きする挙動になっているようです。
初回登録時

2回目登録時

補足
ちなみに Provisioning Template では、一部の設定において上書き時の挙動を制御できるようです。
あとがき
今回は、Fleet Provisioning でモノの名前が重複した場合の挙動を確認しました。
重複していてもエラーとはならず、上書きをしてしまうため、モノの名前の管理や渡し方には十分注意が必要なことがわかりました。
要件によっては、事前プロビジョニングフックなどを使用して重複チェックを行うなどの対策も検討してみると良いかもしれません。
以上、くろすけでした!







