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

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

モノの動的グループ

モノの動的グループでは、検索クエリによってグループのメンバーシップが更新されます。モノの動的グループを使用すると、グループの接続、レジストリ、またはシャドウデータに応じて、モノとやり取りする方法を変更できます。

モノの動的グループはユーザーのフリートインデックスに結び付けられているため、動的グループを使用するにはフリートインデックス作成サービスを有効にしておく必要があります。フリートインデックス作成の検索クエリを使用してグループを作成する前に、モノの動的グループに属するモノをプレビューできます。詳細については、「フリートインデックス作成サービス」および「クエリ構文.」を参照してください。

モノの動的グループをジョブのターゲットとして指定できます。そのジョブを実行できるのは、そのモノの動的グループを定義する条件を満たしているモノだけです。

たとえば、デバイスのファームウェアを更新する場合に、その更新が中断される可能性を最小限に抑えるために、バッテリー残量が 80% を超えているデバイスでのみファームウェアを更新するとします。80% を超えるバッテリー残量が報告されているデバイスだけが含まれているモノの動的グループを作成し、そのモノの動的グループをファームウェア更新ジョブのターゲットとして使用できます。バッテリー残量の条件を満たすデバイスだけがファームウェア更新を受け取ります。80% というバッテリー残量の条件に達したデバイスは、そのモノの動的グループに追加されて、ファームウェア更新を受け取ります。

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

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

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

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

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

  • モノの動的グループを作成、更新、および削除するには、異なる一連のコマンドを使用します。その他のオペレーションでは、モノの静的グループとやり取りするために使用するのと同じコマンドを使用して、モノの動的グループとやり取りできます。

  • 1 つのアカウントが持つことができる動的グループの数は、限られています.

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

  • モノのグループ名にコロン文字 (:) を使用しないでください。コロン文字は他の AWS IoT のサービスで区切り記号として使用され、それによって文字列とモノのグループ名が正しく解析されないことがあります。

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

この例では、倉庫内の気温が華氏 60 度を超えるすべての部屋を含む動的なグループを作成します。温度が 61 度以上になった部屋は、RoomTooWarm のモノの動的グループに追加されます。モノの動的グループのすべての部屋では、冷却ファンがオンになります。RoomTooWarm温度が 60 度以下に下がった部屋は、動的なモノのグループから削除され、ファンはオフになります。

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

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

$ aws iot create-dynamic-thing-group --thing-group-name "RoomTooWarm" --query-string "attributes.temperature>60"
注記

動的なモノのグループ名に個人を特定できる情報を使用することはお勧めしません。

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

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

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

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

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

$ aws iot describe-thing-group --thing-group-name "RoomTooWarm"

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

{ "status": "ACTIVE", "indexName": "AWS_Things", "thingGroupName": "RoomTooWarm", "thingGroupArn": "arn:aws:iot:us-west-2:123456789012:thinggroup/RoomTooWarm", "queryString": "attributes.temperature>60\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 コマンドを使用します。次のコマンドは、モノのグループの説明とクエリ文字列を更新し、メンバーの条件を 65 度を超える温度に変更します。

$ aws iot update-dynamic-thing-group --thing-group-name "RoomTooWarm" --thing-group-properties "thingGroupDescription=\"This thing group contains rooms warmer than 65F.\"" --query-string "attributes.temperature>65"

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

{ "version": 2 }

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

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

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

$ aws iot delete-dynamic-thing-group --thing-group-name "RoomTooWarm"

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

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

制限事項と競合

モノの動的グループでは、モノの静的グループと次の制限が共有されます。

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

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

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

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

モノの動的グループを使用する際には以下の点に注意してください。

フリートインデックス作成サービスが有効になっている必要があります。

モノの動的グループを作成および使用する前に、フリートインデックス作成サービスが有効になっていて、フリートインデックス作成のバックフィルが完了している必要があります。フリートインデックス作成サービスを有効にした後に、時間の余裕を想定しておく必要があります。バックフィルが完了するまでに時間がかかることがあります。登録済みのモノの数が多いほど、バックフィルプロセスにかかる時間は長くなります。フリートインデックス作成サービスをモノの動的グループに対して有効にした後は、モノの動的グループをすべて削除するまでは無効にできません。

注記

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

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

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

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

モノの動的グループを作成または更新するときに、モノの動的グループに追加する対象となる可能性があるが、まだ追加されていないモノが存在する可能性があります。ただし、モノの動的グループを作成または更新するコマンドは、エラーをログに記録してAddThingToDynamicThingGroupsFailed メトリクス.を生成しているときでも成功します。

対象のモノをモノの動的グループに追加できない場合や、モノの動的グループからモノを削除して別のグループに追加した場合、 ログにエラーログエントリCloudWatchが作成されます。モノを動的グループに追加できない場合も、 AddThingToDynamicThingGroupsFailed メトリクスが作成されますが、1 つのメトリクスが複数のログエントリを表すことができます。

モノがモノの動的グループに追加される対象になると、次のことが考慮されます。

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

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

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

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

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

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

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

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

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

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

モノをモノの静的グループに追加する場合、次のことが考慮されます。

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

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

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

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

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

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

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

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

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

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

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

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

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

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