翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
モノの静的グループ
モノの静的グループはこれらをグループに分類することで、複数のモノを一度に管理できるようにします。モノの静的グループには、コンソール、、CLIまたは を使用して管理されるモノのグループが含まれますAPI。一方、動的なモノのグループには、指定したクエリに一致するモノが含まれます。モノの静的グループには、他のモノの静的グループを含めることもできます。グループの階層を構築できます。親グループにポリシーを付加することができ、その子グループ、およびそのグループと子グループ内のすべてのモノに継承されます。これにより、多数のモノに対するアクセス許可の制御が容易になります。
注記
モノのグループポリシーでは、 AWS IoT Greengrass データプレーンオペレーションへのアクセスは許可されません。 AWS IoT Greengrass データプレーンオペレーションへのモノのアクセスを許可するには、モノの証明書にアタッチする AWS IoT ポリシーに アクセス許可を追加します。詳細については、AWS IoT Greengrass 開発者ガイドの「デバイスの認証と承認」を参照してください。
次に、モノの静的グループで実施可能な操作をご紹介します。
-
グループを作成、説明、または削除する。
-
モノをグループに追加するか、複数のグループに追加する。
-
グループからモノを削除する。
-
作成したグループを一覧表示する。
-
グループのすべての子のグループを一覧表示する (直接の子孫と間接の子孫)。
-
子グループ内のすべてのものを含め、グループ内のものを一覧表示する。
-
グループのすべての先祖のグループを一覧表示する (直接の先祖と間接の先祖)。
-
グループの属性を追加、削除または更新します。(属性は、グループに関する情報を格納するのに使用できる名前と値のペアです。)
-
グループにポリシーをアタッチまたはデタッチする。
-
グループにアタッチされるポリシーを一覧表示する。
-
モノによって継承されたポリシーを一覧表示する (そのグループまたはその親グループの 1 つにアタッチされたポリシーによって)。
-
グループ内のモノのログ記録オプションを設定する。「」を参照してくださいAWS IoT ログ記録の設定
-
グループとその子グループのすべてのモノに送信され実行されるジョブを作成する。「AWS IoT ジョブ」を参照してください。
注記
AWS IoT Core ポリシーがアタッチされているモノの静的グループにモノがアタッチされている場合、モノの名前はクライアント ID と一致する必要があります。
モノの静的グループのいくつかの制限があります。
-
グループは、最大 1 つの直接の親を持つことができます。
-
グループが別のグループの子である場合は、作成時に指定します。
-
グループの親は後から変更できません。そのため、グループ階層は入念に計画し、親グループを作成してから、その親グループに含む子グループを作成してください
-
モノが属することができるグループの最大数は、限られています。
-
1 つのモノを同じ階層の複数のグループに追加することはできません。(つまり、共通の親を共有する 2 つのグループにモノを追加することはできません)。
-
グループ名を変更することはできません。
-
モノのグループ名には、û、é、ñ などの国際文字を含めることはできません。
-
モノのグループ名で個人を特定できる情報を使用しないでください。モノのグループ名は、暗号化されていない通信やレポートに表示される可能性があります。
グループにポリシーをアタッチおよびデタッチすると、 AWS IoT オペレーションのセキュリティをいくつかの重要な方法で強化できます。ポリシーに証明書をアタッチしてからモノにアタッチするような、デバイスごとの方法は時間がかかり、多数のデバイスにわたってポリシーを迅速に更新または変更することが困難です。モノのグループにポリシーをアタッチすると、証明書をモノに回す際のステップが節約されます。また、ポリシーはグループメンバーシップを変更すると動的に適用されるため、デバイスがグループのメンバーシップを変更するたびに複雑なアクセス許可セットを再作成する必要はありません。
モノの静的グループの作成
モノの静的グループを作成するには CreateThingGroup コマンドを使用します。
$ aws iot create-thing-group --thing-group-name LightBulbs
CreateThingGroup コマンドは、モノの静的グループの名前、ID、および を含むレスポンスを返しますARN。
{ "thingGroupName": "LightBulbs", "thingGroupId": "abcdefgh12345678ijklmnop12345678qrstuvwx", "thingGroupArn": "arn:aws:iot:us-west-2:123456789012:thinggroup/LightBulbs" }
注記
モノのグループ名に個人を特定できる情報を使用することはお勧めしません。
作成されたときのモノのグループの親を指定している例を次に示します。
$ aws iot create-thing-group --thing-group-name RedLights --parent-group-name LightBulbs
前と同様に、 CreateThingGroup コマンドは、モノの静的グループの名前、ID、および を含むレスポンスを返しますARN。
{ "thingGroupName": "RedLights", "thingGroupId": "abcdefgh12345678ijklmnop12345678qrstuvwx", "thingGroupArn": "arn:aws:iot:us-west-2:123456789012:thinggroup/RedLights", }
重要
モノのグループの説明
DescribeThingGroup コマンドを使用すると、モノのグループに関する情報を取得できます。
$ aws iot describe-thing-group --thing-group-name RedLights
DescribeThingGroup コマンドは、指定されたグループに関する情報を返します。
{ "thingGroupName": "RedLights", "thingGroupArn": "arn:aws:iot:us-west-2:123456789012:thinggroup/RedLights", "thingGroupId": "12345678abcdefgh12345678ijklmnop12345678", "version": 1, "thingGroupMetadata": { "creationDate": 1478299948.882 "parentGroupName": "Lights", "rootToParentThingGroups": [ { "groupArn": "arn:aws:iot:us-west-2:123456789012:thinggroup/ShinyObjects", "groupName": "ShinyObjects" }, { "groupArn": "arn:aws:iot:us-west-2:123456789012:thinggroup/LightBulbs", "groupName": "LightBulbs" } ] }, "thingGroupProperties": { "attributePayload": { "attributes": { "brightness": "3400_lumens" }, }, "thingGroupDescription": "string" }, }
モノの静的グループにモノを追加する
AddThingToThingGroup コマンドを使用して、モノの静的グループにモノを追加できます。
$ aws iot add-thing-to-thing-group --thing-name MyLightBulb --thing-group-name RedLights
AddThingToThingGroup コマンドでは、出力が生成されません。
重要
最大 10 個のグループにモノを追加できます。ただし、1 つのモノを同じ階層の複数のグループに追加することはできません。(つまり、共通の親を共有する 2 つのグループにモノを追加することはできません。)
1 つのモノができる限り多くのモノのグループに属していて、それらのグループの 1 つ以上がモノの動的グループである場合、overrideDynamicGroups フラグを使用して、静的グループが動的グループより優先されるように指定できます。
モノの静的グループからモノを削除する
RemoveThingFromThingGroup コマンドを使用すると、グループからモノを削除できます。
$ aws iot remove-thing-from-thing-group --thing-name MyLightBulb --thing-group-name RedLights
RemoveThingFromThingGroup コマンドでは、出力が生成されません。
モノのグループ内のモノを一覧表示する
ListThingsInThingGroup コマンドを使用して、グループに属するモノを一覧表示できます。
$ aws iot list-things-in-thing-group --thing-group-name LightBulbs
この ListThingsInThingGroup コマンドは、指定されたグループ内のモノのリストを返します。
{ "things":[ "TestThingA" ] }
--recursive
パラメータを使用すると、グループに属するモノとその子グループに属するモノを一覧表示することができます
$ aws iot list-things-in-thing-group --thing-group-name LightBulbs --recursive
{ "things":[ "TestThingA", "MyLightBulb" ] }
注記
このオペレーションは結果整合性があります
モノのグループの一覧表示
ListThingGroups コマンドを使用して、アカウントのモノのグループを一覧表示できます。
$ aws iot list-thing-groups
ListThingGroups コマンドは、 内のモノのグループのリストを返します AWS アカウント。
{ "thingGroups": [ { "groupName": "LightBulbs", "groupArn": "arn:aws:iot:us-west-2:123456789012:thinggroup/LightBulbs" }, { "groupName": "RedLights", "groupArn": "arn:aws:iot:us-west-2:123456789012:thinggroup/RedLights" }, { "groupName": "RedLEDLights", "groupArn": "arn:aws:iot:us-west-2:123456789012:thinggroup/RedLEDLights" }, { "groupName": "RedIncandescentLights", "groupArn": "arn:aws:iot:us-west-2:123456789012:thinggroup/RedIncandescentLights" } { "groupName": "ReplaceableObjects", "groupArn": "arn:aws:iot:us-west-2:123456789012:thinggroup/ReplaceableObjects" } ] }
オプションのフィルタを使用して、指定された接頭辞 (--parent-group
) で始まる名前を持つ、特定のグループを親 (--name-prefix-filter
) またはグループとして持つグループを一覧表示します。 --recursive
パラメータを指定すると、モノのグループの直接の子グループだけでなく、すべての子グループを一覧表示できます。
$ aws iot list-thing-groups --parent-group LightBulbs
この場合、 ListThingGroups コマンドは、 で定義されたモノのグループの直接の子グループのリストを返します AWS アカウント。
{ "childGroups":[ { "groupName": "RedLights", "groupArn": "arn:aws:iot:us-west-2:123456789012:thinggroup/RedLights" } ] }
--recursive
コマンドで ListThingGroups パラメータを使用すると、モノのグループの直接の子グループだけでなく、すべての子グループを一覧表示できます。
$ aws iot list-thing-groups --parent-group LightBulbs --recursive
この ListThingGroups コマンドは、を使用すると、モノのグループのすべての子グループのリストを返します。
{ "childGroups":[ { "groupName": "RedLights", "groupArn": "arn:aws:iot:us-west-2:123456789012:thinggroup/RedLights" }, { "groupName": "RedLEDLights", "groupArn": "arn:aws:iot:us-west-2:123456789012:thinggroup/RedLEDLights" }, { "groupName": "RedIncandescentLights", "groupArn": "arn:aws:iot:us-west-2:123456789012:thinggroup/RedIncandescentLights" } ] }
注記
このオペレーションは結果整合性があります
モノが属するグループを一覧表示する
ListThingGroupsForThing コマンドを使用して、モノが属する直接グループを一覧表示できます。
$ aws iot list-thing-groups-for-thing --thing-name MyLightBulb
ListThingGroupsForThing コマンドは、このモノが属する直接モノグループのリストを返します。
{ "thingGroups":[ { "groupName": "LightBulbs", "groupArn": "arn:aws:iot:us-west-2:123456789012:thinggroup/LightBulbs" }, { "groupName": "RedLights", "groupArn": "arn:aws:iot:us-west-2:123456789012:thinggroup/RedLights" }, { "groupName": "ReplaceableObjects", "groupArn": "arn:aws:iot:us-west-2:123456789012:thinggroup/ReplaceableObjects" } ] }
モノの静的グループの更新
UpdateThingGroup コマンドを使用すると、モノの静的グループの属性を更新できます。
$ aws iot update-thing-group --thing-group-name "LightBulbs" --thing-group-properties "thingGroupDescription=\"this is a test group\", attributePayload=\"{\"attributes\"={\"Owner\"=\"150\",\"modelNames\"=\"456\"}}"
UpdateThingGroup コマンドは、更新後にグループのバージョン番号を含むレスポンスを返します。
{ "version": 4 }
注記
モノが持つことができる属性の数は、限られています。
モノのグループを削除する
モノのグループを削除するには、DeleteThingGroup コマンドを使用します。
$ aws iot delete-thing-group --thing-group-name "RedLights"
DeleteThingGroup コマンドでは、出力が生成されません。
重要
子グループを持つモノのグループを削除しようとすると、次のようなエラーが発生します。
A client error (InvalidRequestException) occurred when calling the DeleteThingGroup operation: Cannot delete thing group : RedLights when there are still child groups attached to it.
グループを削除する前に、すべての子グループを削除する必要があります。
子のモノを持つグループは削除できますが、そのグループのメンバーシップによって付与されているすべてのアクセス許可は適用されなくなります。ポリシーが設定されているグループを削除する前に、それらのアクセス許可を削除してもグループ内の機能が正しく機能しなくなることはありません。また、クラウド内のレコードが更新されている間は、モノが属しているグループを示すコマンド (ListGroupsForThing など) で、そのグループが表示され続けることがあります。
モノの静的グループにポリシーをアタッチする
AttachPolicy コマンドを使用して、モノの静的グループにポリシーをアタッチすることができます。そのため、そのグループ内のすべてのモノやその子グループのモノに拡張機能を割り当てることができます。
$ aws iot attach-policy \ --target "arn:aws:iot:us-west-2:123456789012:thinggroup/LightBulbs" \ --policy-name "myLightBulbPolicy"
AttachPolicy コマンドでは、出力が生成されません。
重要
1 つのグループにアタッチできるポリシーは最大 2 つです。
注記
ポリシー名に個人を特定できる情報を使用することはお勧めしません。
--target
パラメータは、モノのグループ ARN (上記)、証明書 ARN、または Amazon Cognito ID です。ポリシー、証明書、および認証の詳細については、「」を参照してください認証
詳細については、「AWS IoT Core ポリシー」を参照してください。
モノの静的グループからポリシーをデタッチする
DetachPolicy コマンドを使用して、モノのグループからポリシーをデタッチすることができます。そのため、そのグループ内のすべてのモノやその子グループのモノに拡張機能を割り当てることができます。
$ aws iot detach-policy --target "arn:aws:iot:us-west-2:123456789012:thinggroup/LightBulbs" --policy-name "myLightBulbPolicy"
DetachPolicy コマンドでは、出力が生成されません。
モノの静的グループにアタッチされているポリシーを一覧表示する
ListAttachedPolicies コマンドを使用すると、モノの静的グループにアタッチされたポリシーを一覧表示できます。
$ aws iot list-attached-policies --target "arn:aws:iot:us-west-2:123456789012:thinggroup/RedLights"
--target
パラメータは、モノのグループ ARN (上記)、証明書 ARN、または Amazon Cognito ID にすることができます。
オプションの --recursive
パラメータを追加して、グループの親グループにアタッチされたすべてのポリシーを含めます。
ListAttachedPolicies コマンドは、ポリシーのリストを返します。
{ "policies": [ "MyLightBulbPolicy" ... ] }
ポリシーのグループを一覧表示する
ListTargetsForPolicy コマンドを使用して、ポリシーがアタッチされているすべてのグループを含むターゲットを一覧表示できます。
$ aws iot list-targets-for-policy --policy-name "MyLightBulbPolicy"
オプションの --page-size
パラメータを追加して返される結果の最大数を指定します。該当する場合は、各クエリの後続の呼び出しで number
--marker
パラメータを追加して次の結果セットを取得します。string
ListTargetsForPolicy コマンドは、より多くの結果を取得するために使用するターゲットとトークンのリストを返します。
{ "nextMarker": "string", "targets": [ "string" ... ] }
モノの有効なポリシーを取得する
GetEffectivePolicies コマンドを使用して、(グループが直接の親であるか間接的な祖先であるかにかかわらず) 所属するグループにアタッチされたポリシーを含め、モノで有効なポリシーを一覧表示できます。
$ aws iot get-effective-policies \ --thing-name "MyLightBulb" \ --principal "arn:aws:iot:us-east-1:123456789012:cert/a0c01f5835079de0a7514643d68ef8414ab739a1e94ee4162977b02b12842847"
--principal
パラメータを使用して、モノにアタッチされた証明書ARNの を指定します。Amazon Cognito ID 認証を使用している場合は、--cognito-identity-pool-id
パラメータを使用し、オプションで --principal
パラメータを追加して、特定の Amazon Cognito ID を指定します。--cognito-identity-pool-id
のみを指定すると、認証されていないユーザーのアイデンティティプールのロールに関連付けられたポリシーが返されます。両方を使用すると、認証されたユーザーの ID プールのロールに関連付けられたポリシーが返されます。
この --thing-name
パラメータはオプションで、--principal
パラメータの代わりに使用できます。使用すると、そのモノが属するグループにアタッチされているポリシーと、これらのグループの親グループ (階層内のルートグループまで) にアタッチされているポリシーが返されます。
GetEffectivePolicies コマンドは、ポリシーのリストを返します。
{ "effectivePolicies": [ { "policyArn": "string", "policyDocument": "string", "policyName": "string" } ... ] }
MQTT アクションの認可をテストする
TestAuthorization コマンドを使用して、モノに対してMQTTアクション (Publish
、Subscribe
) が許可されているかどうかをテストできます。
aws iot test-authorization \ --principal "arn:aws:iot:us-east-1:123456789012:cert/a0c01f5835079de0a7514643d68ef8414ab739a1e94ee4162977b02b12842847" \ --auth-infos "{\"actionType\": \"PUBLISH\", \"resources\": [ \"arn:aws:iot:us-east-1:123456789012:topic/my/topic\"]}"
--principal
パラメータを使用して、モノにアタッチされた証明書ARNの を指定します。Amazon Cognito ID を使用している場合は、Cognito ID を --principal
として指定するか、--cognito-identity-pool-id
パラメータまたはその両方を使用します。--cognito-identity-pool-id
だけを指定すると、認証されていないユーザーの ID のロールに関連付けられたポリシーが考慮されます。両方を使用すると、認証されたユーザーの ID プールのロールに関連付けられたポリシーが考慮されます。
--auth-infos
パラメータに従ってリソースとMQTTアクションタイプのセットを一覧表示して、テストする 1 つ以上のアクションを指定します。actionType
フィールドには、PUBLISH「」、SUBSCRIBE「」、RECEIVE「」、またはCONNECT「」を含める必要があります。resources
フィールドには、リソース のリストが含まれている必要がありますARNs。詳細については、「AWS IoT Core ポリシー」を参照してください。
--policy-names-to-add
パラメータを指定することで、ポリシーを追加する効果をテストできます。または、--policy-names-to-skip
パラメータを使用してポリシーを削除する効果をテストできます。
オプションの --client-id
パラメータを使用して、結果をさらに絞り込むこともできます。
TestAuthorization コマンドは、指定した --auth-infos
クエリの各セットに対して許可または拒否されているアクションに関する詳細を返します。
{ "authResults": [ { "allowed": { "policies": [ { "policyArn": "string", "policyName": "string" } ] }, "authDecision": "string", "authInfo": { "actionType": "string", "resources": [ "string" ] }, "denied": { "explicitDeny": { "policies": [ { "policyArn": "string", "policyName": "string" } ] }, "implicitDeny": { "policies": [ { "policyArn": "string", "policyName": "string" } ] } }, "missingContextValues": [ "string" ] } ] }