モノの動的グループ - AWS IoT Core

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

モノの動的グループ

モノの動的グループは、レジストリ内の特定の検索クエリから作成されます。デバイス接続、デバイスシャドウの作成、 AWS IoT Device Defender 違反データなどの検索クエリパラメータがこれをサポートします。モノの動的グループでは、デバイスのデータのインデックス作成、検索、集計のためにフリートインデックス作成を有効にする必要があります。モノの動的グループ内のモノは、作成する前にフリートインデックス作成検索クエリを使用してプレビューできます。詳細については、フリートインデックス作成およびクエリ構文を参照してください。

注記

モノの動的グループのオペレーションは、レジストリオペレーションで計測されます。詳細については、AWS IoT Core 「追加の計測の詳細」を参照してください。

モノの動的グループは、以下の点でモノの静的グループと異なります。

  • モノのメンバーシップが明示的には定義されていません。モノの動的グループを作成するには、検索クエリ文字列を定義してグループのメンバーシップを決定します。

  • モノの動的グループを階層の一部にすることはできません。

  • モノの動的グループにはポリシーを適用できません。

  • モノの動的グループを作成、更新、および削除するには、異なる一連のコマンドを使用します。他のすべてのオペレーションでは、両方のタイプのモノのグループに同じコマンドを使用します。

  • あたりの動的グループの数は制限 AWS アカウント されています。

  • モノのグループ名に個人を特定できる情報を使用しないでください。モノのグループ名は、暗号化されていない通信やレポートに表示される可能性があります。

モノの静的グループの詳細については、「モノの静的グループ」を参照してください。

モノの動的グループのユースケース

モノの動的グループは、次のユースケースに使用できます。

モノの動的グループをジョブのターゲットとして指定する

モノの動的グループをターゲットとする連続ジョブを作成すると、希望する基準を満たすデバイスを自動的にターゲットにすることができます。条件には、接続状態や、ソフトウェアバージョンやモデルなど、レジストリやシャドウに保存されている任意の条件を指定できます。モノがモノの動的グループに表示されない場合、そのモノはジョブからジョブドキュメントを受信しません。

例えば、デバイスフリートが更新プロセス中に中断されるリスクを最小限に抑えるためにファームウェアの更新を必要とし、バッテリー寿命が 80% を超えるデバイスのファームウェアのみを更新したい場合などです。80% を超えるバッテリー寿命を持つデバイスPercentBatteryLife のみを含む 80 というモノの動的グループを作成し、ジョブのターゲットとして使用できます。バッテリー寿命基準を満たすデバイスのみがファームウェアの更新を受け取ります。デバイスが 80% のバッテリー寿命基準に達すると、モノの動的グループに自動的に追加され、ファームウェアの更新を受け取ります。

また、ファームウェアやオペレーティングシステムが異なる複数のデバイスモデルがあり、異なるバージョンの新しいソフトウェア更新が必要になる場合もあります。これは、連続ジョブを使用する動的グループで最も一般的なユースケースであり、デバイスモデル、ファームウェア、OS の組み合わせごとに動的グループを作成できます。その後、定義された基準に基づいてデバイスが自動的にこれらのグループのメンバーになるときにソフトウェア更新をプッシュするように、これらの各動的グループに継続的なジョブを設定できます。

ジョブターゲットとしてモノのグループを指定する方法については、「」を参照してくださいCreateJob

動的グループメンバーシップの変更を使用して目的のアクションを実行する

デバイスがモノの動的グループに追加または削除されるたびに、レジストリイベントの更新の一環として MQTT トピックに通知が送信されます。動的グループメンバーシップの更新に基づいて AWS サービスとやり取りし、必要なアクションを実行するようにAWS IoT Core ルールを設定できます。アクションの例には、 への書き込み Amazon DynamoDB、Lambda 関数の呼び出し、Amazon SNS への通知の送信などがあります。

自動違反検出のためにモノの動的グループにデバイスを追加する

AWS IoT Device Defender Detect のお客様は、モノの動的グループにセキュリティプロファイルを定義できます。モノの動的グループのデバイスは、グループで定義されたセキュリティプロファイルによって違反を自動的に検出されます。

モノの動的グループのログレベルを設定して、きめ細かなログ記録でデバイスを観察する

モノの動的グループでログレベルを指定できます。これは、特定の基準を満たすデバイスのログ記録レベルと詳細のみをカスタマイズする場合に便利です。例えば、特定のファームウェアバージョンのデバイスが特定のルールの公開されたトピックでエラーを引き起こしている可能性がある場合は、詳細なログ記録を設定してこれらの問題をデバッグできます。この場合、このファームウェアバージョンを持つすべてのデバイスに対して動的グループを作成できます。このグループは、レジストリ属性またはデバイスシャドウとして保存されていることを前提としています。その後、ログ記録ターゲットをこのモノの動的グループとして定義して、デバッグレベルを設定できます。詳細なログ記録の詳細については、 CloudWatch 「ログ AWS IoT を使用したモニタリング」を参照してください。特定のモノのグループのログ記録レベルを指定する方法の詳細については、「 でリソース固有のログ記録を設定する AWS IoT」を参照してください。

モノの動的グループを作成する

モノの動的グループを作成するには CreateDynamicThingGroup コマンドを使用します。80 PercentBatteryLife シナリオのモノの動的グループを作成するには、 create-dynamic-thing-group CLI コマンドを使用します。

$ aws iot create-dynamic-thing-group --thing-group-name "80PercentBatteryLife" --query-string "attributes.batterylife80"
注記

モノの動的グループ名に個人を特定できる情報を使用しないでください。

CreateDynamicThingGroup コマンドは レスポンスを返します。レスポンスには、インデックス名、クエリ文字列、クエリバージョン、モノのグループ名、モノのグループ ID、モノのグループの Amazon リソースネーム (ARN) が含まれます。

{ "indexName": "AWS_Things", "queryVersion": "2017-09-30", "thingGroupName": "80PercentBatteryLife", "thingGroupArn": "arn:aws:iot:us-west-2:123456789012:thinggroup/80PercentBatteryLife", "queryString": "attributes.batterylife80\n", "thingGroupId": "abcdefgh12345678ijklmnop12345678qrstuvwx" }

モノの動的グループの作成は一度には行われません。モノの動的グループのバックフィルは完了するまでに時間がかかります。モノの動的グループを作成すると、グループのステータスが に設定されますBUILDING。バックフィルが完了すると、ステータスは ACTIVE に変わります。モノの動的グループのステータスを確認するには、 DescribeThingGroup コマンドを使用します。

モノの動的グループを記述する

モノの動的グループに関する情報を取得するには DescribeThingGroup コマンドを使用します。

$ aws iot describe-thing-group --thing-group-name "80PercentBatteryLife"

DescribeThingGroup コマンドは、指定されたグループに関する情報を返します。

{ "status": "ACTIVE", "indexName": "AWS_Things", "thingGroupName": "80PercentBatteryLife", "thingGroupArn": "arn:aws:iot:us-west-2:123456789012:thinggroup/80PercentBatteryLife", "queryString": "attributes.batterylife80\n", "version": 1, "thingGroupMetadata": { "creationDate": 1548716921.289 }, "thingGroupProperties": {}, "queryVersion": "2017-09-30", "thingGroupId": "84dd9b5b-2b98-4c65-84e4-be0e1ecf4fd8" }

モノの動的グループDescribeThingGroupで を実行すると、モノの動的グループに固有の属性が返されます。戻り属性の例は、queryString と ステータスです。

モノの動的グループのステータスは次のいずれかの値です。

ACTIVE

モノの動的グループは使用する準備ができています。

BUILDING

モノの動的グループは作成中であり、モノのメンバーシップが処理中です。

REBUILDING

モノの動的グループは、グループの検索クエリの調整が済んで、メンバーシップが更新中です。

注記

モノの動的グループを作成したら、そのステータスに関係なく使用してください。ステータスが ACTIVE であるモノの動的グループには、そのモノの動的グループの検索クエリに一致するすべてモノが含まれています。ステータスが BUILDING または REBUILDING であるモノの動的グループには、検索クエリに一致するモノがすべて含まれているとは限りません。

モノの動的グループを更新する

モノの動的グループの属性 (グループの検索クエリなど) を更新するには UpdateDynamicThingGroup コマンドを使用します。次のコマンドは、2 つの属性を更新します。1 つはモノのグループの説明で、もう 1 つはメンバーシップ基準をバッテリー寿命 > 85 に変更するクエリ文字列です。

$ aws iot update-dynamic-thing-group --thing-group-name "80PercentBatteryLife" --thing-group-properties "thingGroupDescription=\"This thing group contains devices with a battery life greater than 85 percent.\"" --query-string "attributes.batterylife85"

UpdateDynamicThingGroup コマンドは、更新後にグループのバージョン番号を含むレスポンスを返します。

{ "version": 2 }

モノの動的グループの更新は一度には行われません。モノの動的グループのバックフィルは完了するまでに時間がかかります。モノの動的グループを更新すると、グループがメンバーシップを更新REBUILDINGしている間、グループのステータスが に変わります。バックフィルが完了すると、ステータスは ACTIVE に変わります。モノの動的グループのステータスを確認するには、 DescribeThingGroup コマンドを使用します。

モノの動的グループを削除する

モノの動的グループを削除するには DeleteDynamicThingGroup コマンドを使用します。

$ aws iot delete-dynamic-thing-group --thing-group-name "80PercentBatteryLife"

DeleteDynamicThingGroup コマンドでは、出力が生成されません。

クラウド内のレコードが更新されている間は、モノが属しているグループを示すコマンド (ListGroupsForThing など) で、そのグループが表示され続けることがあります。

モノの動的グループと静的グループの制限

モノの動的グループとモノの静的グループには、次の制限があります。

  • モノのグループが持つことができる属性の数は限られています

  • モノが属することができるグループの最大数は、限られています

  • モノのグループの名前を変更することはできません。

  • モノのグループ名には、û、é、ñ などの国際文字を含めることはできません。

モノの動的グループの制限

モノの動的グループには次の制限があります。

フリートインデックス作成

フリートインデックス作成サービスを有効にすると、デバイスのフリートに対して検索クエリを実行できます。フリートインデックス作成のバックフィルが完了したら、モノの動的グループを作成および管理できます。バックフィルプロセスの完了時間は、 に登録されているデバイスフリートのサイズによって直接処理されます AWS クラウド。フリートインデックス作成サービスをモノの動的グループに対して有効にした後は、モノの動的グループをすべて削除するまでは無効にできません。

注記

フリートインデックスに対してクエリを実行するアクセス許可があるユーザーは、フリート全体でモノのデータにアクセスできます。

モノの動的グループの数が限られている

モノの動的グループの数は限られています

コマンドが成功するとエラーをログに記録できる

モノの動的グループを作成または更新すると、モノの一部がモノの動的グループに含めることができますが、追加されない場合があります。このシナリオでは、エラーのログを記録し、 AddThingToDynamicThingGroupsFailedメトリクスを生成するときに、作成または更新コマンドが正常に実行されます。1 つのメトリクスで複数のログエントリを表すことができます。

ログのエラーログエントリ CloudWatch は、次の場合に作成されます。

  • 対象となるモノをモノの動的グループに追加することはできません。

  • モノはモノの動的グループから削除され、別のグループに追加されます。

モノがモノの動的グループに追加される対象になったら、次の点を考慮してください。

  • 既に最大限のグループに追加されていますか? (「制限」を参照してください)

    • いいえ: モノはモノの動的グループに追加されます。

    • はい: モノはモノの動的グループのメンバーですか?

      • いいえ: モノをモノの動的グループに追加することはできず、エラーがログに記録され、AddThingToDynamicThingGroupsFailed メトリクスが生成されます。

      • はい: 参加するモノの動的グループは、そのモノが既にメンバーになっているモノの動的グループよりも古いものですか?

        • いいえ: モノをモノの動的グループに追加することはできず、エラーがログに記録され、AddThingToDynamicThingGroupsFailed メトリクスが生成されます。

        • はい: 最新のモノの動的グループからモノを削除し、エラーを記録して、モノをモノの動的グループに追加します。これにより、モノが削除されたモノの動的グループのエラーと AddThingToDynamicThingGroupsFailedメトリクスが生成されます。

モノの動的グループ内のモノが検索クエリを満たしなくなった場合、モノはモノの動的グループから削除されます。同様に、モノがモノの動的グループの検索クエリを満たすように更新されると、前述のようにモノがグループに追加されます。このような追加と削除は正常であり、エラーログエントリは生成されません。

overrideDynamicGroups が有効になっている場合は、静的グループの方が動的グループより優先されます。

モノが属することができるグループの最大数は、限られていますAddThingToThingGroup または UpdateThingGroupsForThing コマンドを使用してモノのメンバーシップを更新する場合、 --overrideDynamicGroupsパラメータを追加すると、モノの動的グループよりもモノの静的グループの優先順位が高くなります。

モノをモノの静的グループに追加するときは、次の点を考慮してください。

  • モノは既にグループの最大数に属していますか?

    • いいえ: モノがモノの静的グループに追加されます。

    • はい: モノは動的グループに属していますか?

      • いいえ: モノをモノのグループに追加することができません。コマンドにより例外が発生します。

      • はい: --overrideDynamicGroups は有効になっていましたか?

        • いいえ: モノをモノのグループに追加することができません。コマンドにより例外が発生します。

        • はい: モノは最も新しく作成されたモノの動的グループから削除されて、エラーがログに記録され、モノが削除されたモノの動的グループのAddThingToDynamicThingGroupsFailed メトリクスが生成されます。その後、モノがモノの静的グループに追加されます。

作成日時が古いモノの動的グループの方が優先されます。

モノが属することができるグループの最大数は、限られています。作成または更新オペレーションでモノの追加のグループ適格性が作成され、そのモノがグループ制限に達した場合、別のモノの動的グループから削除して、この追加を有効にできます。この動作の詳細については、「コマンドが成功するとエラーをログに記録できる」と「overrideDynamicGroups が有効になっている場合は、静的グループの方が動的グループより優先されます。」で例を参照してください。

モノがモノの動的グループから削除されると、エラーが記録され、イベントが発生します。

モノの動的グループにポリシーを適用することはできません。

モノの動的グループにポリシーを適用しようとすると、例外が生成されます。

モノの動的グループのメンバーシップには結果整合性があります。

レジストリでは、モノの最終的な状態のみが評価されます。複数の状態が急速に更新された場合、中間の状態はスキップされることがあります。ルールまたはジョブを、メンバーシップが中間状態に依存するモノの動的グループに関連付けることは避けてください。