Amazon Web Services ブログ
AWS IoT モノのタイプの 50 個の属性を活用してデバイスの検索性を向上する方法
はじめに
AWS IoT Core を使ってモノのインターネット (IoT) デバイスのフリートを管理する際に、特定のデバイスやデバイスのセットを ID や能力に基づいて検索し発見する方法として、AWS IoT のモノのタイプの属性を使うことはデバイスの発見を容易にするために推奨される方法の一つです。
「モノ」とは、AWS IoT Core の IoT 対応デバイスのようなエンティティの論理的な名前です。モノのプロビジョニング中に、AWS IoT レジストリ内での識別と検索を容易にするために、検索可能な属性を付与することができます。
AWS IoT レジストリ からモノを検索したいのはどんな場合でしょうか? その質問に答えるために、Lighting-as-a-Service (LaaS) プロバイダまたはその顧客が(セルフサービスポータルを通じて)、既に設置されている照明から、特定の製品タイプ、モデル番号、ワット数、輝度、色、製造バッチがいくつあるかを特定する必要がある、コネクテッド照明のユースケースを考えてみましょう。
AWS IoT Core では、モノに検索可能な属性の数が 3 つまでという制限があり、追加の属性に基づいてデバイスを検索したいときには十分でない場合があります。本記事では、AWS IoT Core のモノのタイプと AWS IoT Device Management のフリートインデックスの組み合わせを使って、この課題を軽減する方法を紹介します。
フリートインデックスにより、フリート管理者はデバイスフリートを整理、調査、トラブルシューティングすることができます。デバイスのグループに検索を実行し、状態、接続性、デバイス違反を含むデバイス属性のさまざまな組み合わせに基づくデバイスレコードの統計を集計できます。例えば、ある場所に設置されたあるモデルの電球のうち、現在何個が接続切断されていて、古いバージョンのファームウェアを実行しているか、といった情報を検索することができます。
前提条件
AWS IoT Core のデバイスプロビジョニング機能と AWS IoT Device Management のフリートインデックス機能の基本的な理解が必要です。
チュートリアル
それでは、検索不可能な属性をモノに追加する方法と、検索不可能な属性を使っていてもフリートインデックスを使って検索する方法を見てみましょう。
MyFirstThing というモノをプロビジョニングし、検索可能な属性を付けてみましょう。下図からわかるように、検索可能な属性は 3 つしか付与することができません。
このモノにさらに属性を追加するために、モノに「モノのタイプ」を付与することができます。
モノのタイプは、同じタイプに関連付けられたすべてのモノに共通する説明と構成情報を保存することを可能にします。これにより、レジストリ内のモノの管理が簡単になります。例えば、一つ一つの電球に個別に属性を割り当てる代わりに、LightBulb というモノのタイプを作成し、シリアル番号、光度、ワット数などの電球の属性を関連付けることができます。さらに、既存のモノのタイプを LightBulb に変更すれば、モノのタイプの属性を継承し、モノのタイプで定義された各属性の値を指定することができるようになります。
モノのタイプをモノに割り当てることはオプションですが、これを使うことで 47 の検索不可能な属性が追加可能となります。この関連付けにより、下図のように合計 50 の属性が使用可能になります。
本記事では、メーカー、シリアル番号、ワット数などの検索可能な属性を持つ LightBulb タイプを作成し、 MyFirstThing に割り当てました。また下図でわかるように、3 つの検索不可能な属性(色、ファームウェア・タイプ、輝度)を追加しました。
では、AWS CLI の list things コマンドを使って検索してみます。検索可能な属性で検索すると、LightBulb_1 がヒットします。
aws iot list-things --attribute-name "wattage" --attribute-value '40'
{
"things": [
{
"thingName": "LightBulb_1",
"thingTypeName": "LightBulb",
"thingArn": "arn:aws:iot:ap-south-1:************:thing/LightBulb_1",
"attributes": {
"Color": "White",
"Firmware_Type_Version": "Smart_LED.1.0",
"Luminosity": "100",
"manufacturer": "xyz_corp",
"serialnumber": "123",
"wattage": "40"
},
"version": 5
}
]
}
しかし、検索不可能な属性で検索すると、モノのタイプで追加された属性は検索不可能であるため、コマンドは何も返しません。
aws iot list-things --attribute-name "Color" --attribute-value 'White'
{
"things": []
}
そこで、AWS IoT Device Management のフリートインデックス機能が役に立ちます。
AWS IoT Device Management のフリートインデックス機能を使えば、AWS IoT レジストリ、AWS IoT デバイスシャドウ、AWS IoT への接続状態、AWS IoT Device Defender での違反といったソースからデバイスデータのインデックスを作成、検索、集約することができます。
フリートインデックス機能は、前述したような主要な機能を備えていますが、本記事ではモノのタイプの属性に基づくインデックス作成と検索にのみ焦点を当てます。
それでは、AWS IoT コンソールを使ってフリートインデックスを有効にしましょう(既に有効になっている場合はこのステップは飛ばしてください)。左のパネルから 設定 を選択し、フリートのインデックス作成 までスクロールし、以下のように インデックス作成の管理 を選択します。
フリートインデックスの管理画面で、以下のようにスイッチを切り替えてフリートインデックスを有効化し、画面下部の 更新 を選択して設定を保存します。
前の画面に表示されている他のチェックボックスは、デバイスシャドウ、接続状態、および Device Defender の違反に基づくインデックス作成と検索を可能にしますが、これらはこの記事の範囲外であるためここでは選択しません。
フリートインデックスが有効化されたら、下図に示すように AWS IoT のモノの管理コンソールから 高度な検索 を選択します。
検索ボックスを使って、検索不可能な属性を検索します。例えば、color の値が white である場合、以下のように、一致する属性値を持つものが画面下部に検索結果として表示されます。
また、AWS CLI を使用して、検索不可能な属性 color の値が white であるデバイスに対して同様の検索を実行することもできます。
aws iot search-index –query-string ‘attributes.color=White’
{
"things": [
{
"thingName": "LightBulb_1",
"thingId": "******************************",
"thingTypeName": "LightBulb",
"attributes": {
"Color": "White",
"Firmware_Type_Version": "Smart_LED.1.0",
"Luminosity": "100",
"manufacturer": "xyz_corp",
"serialnumber": "123",
"wattage": "40"
}
}
]
}
なお、AWS IoT Device Management のフリートインデックス作成は、管理者がデバイス群を整理、調査、トラブルシューティングできるようにするものであり、管理用途でのみ使用すべきことにご注意ください。
フリートインデックスと検索機能は、インデックスの更新と検索の実行数によって課金されます。詳しくは価格ページをご覧ください。また、制限とクォータについてはこちらをご覧ください。
まとめ
本記事では、AWS IoT モノのタイプと AWS IoT Device Management のフリートインデックスを使ってデバイスの検索性を向上する方法を紹介した。モノのタイプを使用すると、モノに追加の属性(検索不可)を付与することができ、これらは検索不可の属性でありながら、フリートインデックス機能を使用することでこれらの属性が検索可能となります。
その他のAWS IoT Core 関連のリソースについては、ウェブサイトをご覧ください。
この記事は Ankush Sharma によって書かれた How to improve device discoverability by unlocking 50 AWS IoT thing type attributes の日本語訳です。この記事はソリューションアーキテクトの中西貴大が翻訳しました。