モノの動的グループ - 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 が有効になっている場合は、静的グループの方が動的グループより優先されます。」で例を参照してください。

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

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

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

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

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