翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
モノの動的グループ
モノの動的グループは、レジストリ内の特定の検索クエリから作成されます。デバイス接続、デバイスシャドウ作成、 AWS IoT Device Defender 違反データなどの検索クエリパラメータは、これをサポートします。モノの動的グループでは、デバイスのデータのインデックス作成、検索、集計のためにフリートインデックス作成を有効にする必要があります。フリートのインデックス作成の検索クエリを使用してグループを作成する前に、モノの動的グループに属するモノをプレビューできます。詳細については、フリートインデックス作成およびクエリ構文を参照してください。
注記
モノの動的グループのオペレーションは、レジストリオペレーションで計測されます。詳細については、「AWS IoT Core
のその他の詳細
モノの動的グループは、以下の点でモノの静的グループと異なります。
-
モノのグループ名で個人を特定できる情報を使用しないでください。モノのグループ名は、暗号化されていない通信やレポートに表示される可能性があります。
モノの静的グループの詳細については、「モノの静的グループ」を参照してください。
モノの動的グループのユースケース
次のユースケースでは、モノの動的グループを使用できます。
モノの動的グループをジョブのターゲットとして指定します。
モノの動的グループをターゲットとする継続的なジョブを作成すると、目的の条件を満たすデバイスを自動的にターゲットにできます。この条件は、接続状態、またはソフトウェアバージョンやモデルなどのレジストリやシャドウに保存されている任意の基準です。モノがモノの動的グループに表示されない場合、ジョブからジョブドキュメントは受信されません。
例えば、デバイスフリートが更新プロセス中の中断リスクを最小限に抑えるためにファームウェアの更新を必要としており、バッテリー寿命が 80% 以上あるデバイスのファームウェアのみを更新したい場合です。80PercentBatteryLife と呼ばれるモノの動的グループを作成し、このグループには、バッテリー寿命が 80% を超えるデバイスのみが含まれ、ジョブのターゲットとして使用できます。バッテリー残量の条件を満たすデバイスだけがファームウェア更新を受け取ります。80% というバッテリー残量の条件に達したデバイスは、そのモノの動的グループに自動的に追加されて、ファームウェア更新を受け取ります。
また、ファームウェアやオペレーティングシステムが異なる複数のデバイスモデルがあり、新しいソフトウェア更新の異なるバージョンが必要になる場合があります。これは、連続ジョブを持つ動的グループで最も一般的なユースケースであり、デバイスモデル、ファームウェア、OS の組み合わせごとに動的グループを作成できます。その後、定義された条件に基づいてデバイスが自動的にこれらのグループのメンバーになると、これらの動的グループに連続ジョブを設定して、ソフトウェアの更新をプッシュできます。
ジョブターゲットとしてモノのグループを指定する方法については、「CreateJob」を参照してください。
動的グループメンバーシップの変更を使用して目的のアクションを実行する
デバイスがモノの動的グループに追加または削除されるたびに、レジストリイベントの更新の一環として MQTT トピックに通知が送信されます。動的グループメンバーシップの更新に基づいて AWS サービスとやり取りし、必要なアクションを実行するようにAWS IoT Core ルールを設定できます。例えば、 Amazon DynamoDBへの記述、Lambda 関数の呼び出し、または Amazon SNS トピックへの通知の送信などです。
自動違反検出のためにモノの動的グループにデバイスを追加する
AWS IoT Device Defender Detect のお客様は、モノの動的グループでセキュリティプロファイルを定義できます。モノの動的グループのデバイスは、グループで定義されたセキュリティプロファイルによって違反を自動的に検出されます。
モノの動的グループにログレベルを設定して、きめ細かなログ記録でデバイスを観察する
モノの動的グループでログレベルを指定できます。これは、特定の条件を満たすデバイスのログ記録レベルと詳細のみをカスタマイズする場合に便利です。例えば、特定のファームウェアバージョンのデバイスが特定のルールの公開トピックでエラーを引き起こしていると思われる場合は、これらの問題をデバッグするために詳細なログ記録を設定することができます。この場合、このファームウェアバージョンを持つすべてのデバイスに対して動的グループを作成できます。これは、レジストリ属性またはデバイスシャドウとして保存されているものと見なされます。その後、このモノの動的グループとして定義されたログ記録ターゲットを使用して、デバッグレベルを設定できます。詳細なログ記録の詳細については、CloudWatch Logs AWS IoT を使用したモニタリング」を参照してください。特定のモノのグループのログ記録レベルを指定する方法の詳細については、「AWS IoTでリソース固有のログ記録を設定する」を参照してください。
モノの動的グループを作成する
モノの動的グループを作成するには CreateDynamicThingGroup コマンドを使用します。80PercentBatteryLife シナリオのモノの動的グループを作成するには、create-dynamic-thing-groupCLI コマンドを使用します。
$ 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 が有効になっている場合は、静的グループの方が動的グループより優先されます。」で例を参照してください。
モノがモノの動的グループから削除されると、エラーがログに記録され、イベントが発生します。
モノの動的グループにポリシーを適用することはできません。
モノの動的グループにポリシーを適用しようとすると、例外が生成されます。
モノの動的グループのメンバーシップには結果整合性があります。
レジストリでは、モノの最終的な状態のみが評価されます。複数の状態が急速に更新された場合、中間の状態はスキップされることがあります。ルールまたはジョブを、メンバーシップが中間的な状態に応じて変化するモノの動的グループと関連付けないでください。