Kelompok benda statis - AWS IoT Core

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Kelompok benda statis

Kelompok benda statis memungkinkan Anda mengelola beberapa hal sekaligus dengan mengkategorikannya ke dalam kelompok. Grup benda statis berisi sekelompok hal yang dikelola dengan menggunakan konsol, CLI, atau API. Grup benda dinamis, di sisi lain, berisi hal-hal yang cocok dengan kueri tertentu. Grup benda statis juga dapat berisi grup benda statis lainnya - Anda dapat membangun hierarki grup. Anda dapat melampirkan kebijakan ke grup induk dan itu diwarisi oleh grup turunannya, dan oleh semua hal dalam grup dan di grup anaknya. Ini membuat kontrol izin mudah untuk sejumlah besar hal.

catatan

Kebijakan grup hal tidak mengizinkan akses ke operasi pesawat AWS IoT Greengrass data. Untuk mengizinkan akses sesuatu ke operasi pesawat AWS IoT Greengrass data, tambahkan izin ke AWS IoT kebijakan yang Anda lampirkan ke sertifikat benda tersebut. Untuk informasi selengkapnya, lihat Otentikasi dan otorisasi perangkat di panduan AWS IoT Greengrass pengembang.

Berikut adalah hal-hal yang dapat Anda lakukan dengan grup benda statis:

  • Buat, jelaskan, atau hapus grup.

  • Tambahkan sesuatu ke grup, atau ke lebih dari satu grup.

  • Hapus sesuatu dari grup.

  • Buat daftar grup yang telah Anda buat.

  • Buat daftar semua kelompok anak dari suatu kelompok (keturunan langsung dan tidak langsungnya.)

  • Buat daftar hal-hal dalam kelompok, termasuk semua hal dalam kelompok anaknya.

  • Buat daftar semua kelompok leluhur dari suatu kelompok (orang tua langsung dan tidak langsungnya.)

  • Tambahkan, hapus, atau perbarui atribut grup. (Atribut adalah pasangan nama-nilai yang dapat Anda gunakan untuk menyimpan informasi tentang grup.)

  • Lampirkan atau lepaskan kebijakan ke atau dari grup.

  • Buat daftar kebijakan yang dilampirkan ke grup.

  • Buat daftar kebijakan yang diwarisi oleh suatu hal (berdasarkan kebijakan yang dilampirkan pada grupnya, atau salah satu kelompok induknya.)

  • Konfigurasikan opsi logging untuk hal-hal dalam grup. Lihat Konfigurasikan AWS IoT logging.

  • Buat pekerjaan yang dikirim ke dan dieksekusi pada setiap hal dalam kelompok dan kelompok anaknya. Lihat Tugas.

catatan

Ketika sesuatu dilampirkan ke grup benda statis tempat AWS IoT Core kebijakan dilampirkan, nama benda harus cocok dengan ID klien.

Berikut adalah beberapa batasan kelompok benda statis:

  • Sebuah kelompok dapat memiliki paling banyak satu orang tua langsung.

  • Jika grup adalah anak dari grup lain, tentukan ini pada saat itu dibuat.

  • Anda tidak dapat mengubah induk grup nanti, jadi pastikan untuk merencanakan hierarki grup Anda dan membuat grup induk sebelum Anda membuat grup anak yang dikandungnya.

  • Jumlah kelompok yang dapat dimiliki suatu benda terbatas.

  • Anda tidak dapat menambahkan sesuatu ke lebih dari satu grup dalam hierarki yang sama. (Dengan kata lain, Anda tidak dapat menambahkan apa pun ke dua grup yang memiliki induk yang sama.)

  • Anda tidak dapat mengganti nama grup.

  • Nama grup benda tidak dapat berisi karakter internasional, seperti û, é dan ñ.

  • Jangan gunakan informasi yang dapat diidentifikasi secara pribadi dalam nama grup barang Anda. Nama grup benda dapat muncul dalam komunikasi dan laporan yang tidak terenkripsi.

Melampirkan dan melepaskan kebijakan ke grup dapat meningkatkan keamanan AWS IoT operasi Anda dalam beberapa cara yang signifikan. Metode per-perangkat untuk melampirkan kebijakan ke sertifikat, yang kemudian dilampirkan pada suatu hal, memakan waktu dan menyulitkan untuk memperbarui atau mengubah kebijakan dengan cepat di seluruh armada perangkat. Memiliki kebijakan yang dilampirkan pada grup benda menyimpan langkah-langkah ketika tiba saatnya untuk memutar sertifikat pada suatu hal. Dan kebijakan diterapkan secara dinamis pada berbagai hal ketika mereka mengubah keanggotaan grup, sehingga Anda tidak perlu membuat ulang kumpulan izin yang rumit setiap kali perangkat mengubah keanggotaan dalam grup.

Buat grup benda statis

Gunakan CreateThingGroup perintah untuk membuat grup benda statis:

$ aws iot create-thing-group --thing-group-name LightBulbs

CreateThingGroupPerintah mengembalikan respon yang berisi nama grup benda statis, ID, dan ARN:

{ "thingGroupName": "LightBulbs", "thingGroupId": "abcdefgh12345678ijklmnop12345678qrstuvwx", "thingGroupArn": "arn:aws:iot:us-west-2:123456789012:thinggroup/LightBulbs" }
catatan

Kami tidak menyarankan menggunakan informasi identitas pribadi dalam nama grup barang Anda.

Berikut adalah contoh yang menentukan induk dari kelompok hal statis ketika dibuat:

$ aws iot create-thing-group --thing-group-name RedLights --parent-group-name LightBulbs

Seperti sebelumnya, CreateThingGroup perintah mengembalikan respons yang berisi nama grup benda statis, ID, dan ARN:

{ "thingGroupName": "RedLights", "thingGroupId": "abcdefgh12345678ijklmnop12345678qrstuvwx", "thingGroupArn": "arn:aws:iot:us-west-2:123456789012:thinggroup/RedLights", }
penting

Ingatlah batas-batas berikut saat membuat hierarki grup benda:

  • Kelompok benda hanya dapat memiliki satu orang tua langsung.

  • Jumlah kelompok anak langsung yang dapat dimiliki oleh suatu kelompok terbatas.

  • Kedalaman maksimum hierarki grup terbatas.

  • Jumlah atribut yang dapat dimiliki suatu kelompok terbatas. (Atribut adalah pasangan nama-nilai yang dapat Anda gunakan untuk menyimpan informasi tentang grup.) Panjang setiap nama atribut dan setiap nilai juga terbatas.

Jelaskan kelompok hal

Anda dapat menggunakan DescribeThingGroup perintah untuk mendapatkan informasi tentang grup hal:

$ aws iot describe-thing-group --thing-group-name RedLights

DescribeThingGroupPerintah mengembalikan informasi tentang kelompok tertentu:

{ "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" }, }

Tambahkan sesuatu ke grup benda statis

Anda dapat menggunakan AddThingToThingGroup perintah untuk menambahkan sesuatu ke grup benda statis:

$ aws iot add-thing-to-thing-group --thing-name MyLightBulb --thing-group-name RedLights

AddThingToThingGroupPerintah tidak menghasilkan output apa pun.

penting

Anda dapat menambahkan sesuatu ke maksimal 10 grup. Tetapi Anda tidak dapat menambahkan sesuatu ke lebih dari satu grup dalam hierarki yang sama. (Dengan kata lain, Anda tidak dapat menambahkan sesuatu ke dua grup yang berbagi induk yang sama.)

Jika sesuatu milik sebanyak mungkin grup benda, dan satu atau lebih grup tersebut adalah grup benda dinamis, Anda dapat menggunakan overrideDynamicGroupsbendera untuk membuat grup statis diprioritaskan daripada grup dinamis.

Hapus sesuatu dari grup benda statis

Anda dapat menggunakan RemoveThingFromThingGroup perintah untuk menghapus sesuatu dari grup:

$ aws iot remove-thing-from-thing-group --thing-name MyLightBulb --thing-group-name RedLights

RemoveThingFromThingGroupPerintah tidak menghasilkan output apa pun.

Daftar hal-hal dalam kelompok hal

Anda dapat menggunakan ListThingsInThingGroup perintah untuk membuat daftar hal-hal yang termasuk dalam grup:

$ aws iot list-things-in-thing-group --thing-group-name LightBulbs

ListThingsInThingGroupPerintah mengembalikan daftar hal-hal dalam kelompok yang diberikan:

{ "things":[ "TestThingA" ] }

Dengan --recursive parameter, Anda dapat membuat daftar hal-hal milik grup dan yang ada di salah satu grup turunannya:

$ aws iot list-things-in-thing-group --thing-group-name LightBulbs --recursive
{ "things":[ "TestThingA", "MyLightBulb" ] }
catatan

Operasi ini pada akhirnya konsisten. Dengan kata lain, perubahan pada kelompok benda mungkin tidak tercermin sekaligus.

Daftar kelompok hal

Anda dapat menggunakan ListThingGroups perintah untuk membuat daftar grup hal akun Anda:

$ aws iot list-thing-groups

ListThingGroupsPerintah mengembalikan daftar grup hal di Akun 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" } ] }

Gunakan filter opsional untuk mencantumkan grup yang memiliki grup tertentu sebagai parent (--parent-group) atau grup yang namanya dimulai dengan awalan (--name-prefix-filter.) --recursiveParameter ini memungkinkan Anda untuk membuat daftar semua grup anak, bukan hanya grup anak langsung dari grup hal:

$ aws iot list-thing-groups --parent-group LightBulbs

Dalam hal ini, ListThingGroups perintah mengembalikan daftar grup anak langsung dari grup hal yang didefinisikan dalam Akun AWS:

{ "childGroups":[ { "groupName": "RedLights", "groupArn": "arn:aws:iot:us-west-2:123456789012:thinggroup/RedLights" } ] }

Gunakan --recursive parameter dengan ListThingGroups perintah untuk mencantumkan semua grup anak dari grup benda, bukan hanya mengarahkan anak-anak:

$ aws iot list-thing-groups --parent-group LightBulbs --recursive

ListThingGroupsPerintah mengembalikan daftar semua kelompok anak dari grup hal:

{ "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" } ] }
catatan

Operasi ini pada akhirnya konsisten. Dengan kata lain, perubahan pada kelompok benda mungkin tidak tercermin sekaligus.

Daftar grup untuk suatu hal

Anda dapat menggunakan ListThingGroupsForThing perintah untuk membuat daftar grup langsung yang dimiliki suatu benda:

$ aws iot list-thing-groups-for-thing --thing-name MyLightBulb

ListThingGroupsForThingPerintah mengembalikan daftar grup hal langsung yang menjadi milik benda ini:

{ "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" } ] }

Perbarui grup benda statis

Anda dapat menggunakan UpdateThingGroup perintah untuk memperbarui atribut grup benda statis:

$ aws iot update-thing-group --thing-group-name "LightBulbs" --thing-group-properties "thingGroupDescription=\"this is a test group\", attributePayload=\"{\"attributes\"={\"Owner\"=\"150\",\"modelNames\"=\"456\"}}"

UpdateThingGroupPerintah mengembalikan respons yang berisi nomor versi grup setelah pembaruan:

{ "version": 4 }
catatan

Jumlah atribut yang dapat dimiliki suatu benda terbatas.

Hapus grup benda

Untuk menghapus grup sesuatu, gunakan DeleteThingGroup perintah:

$ aws iot delete-thing-group --thing-group-name "RedLights"

DeleteThingGroupPerintah tidak menghasilkan output apa pun.

penting

Jika Anda mencoba menghapus grup benda yang memiliki grup hal anak, Anda menerima kesalahan:

A client error (InvalidRequestException) occurred when calling the DeleteThingGroup operation: Cannot delete thing group : RedLights when there are still child groups attached to it.

Sebelum Anda menghapus grup, hapus grup anak apa pun terlebih dahulu.

Anda dapat menghapus grup yang memiliki item turunan, tetapi izin apa pun yang diberikan untuk hal-hal tersebut oleh keanggotaan dalam grup tidak lagi berlaku. Sebelum menghapus grup yang memiliki kebijakan terlampir, periksa dengan seksama bahwa menghapus izin tersebut tidak akan menghentikan hal-hal dalam grup agar tidak dapat berfungsi dengan baik. Selain itu, perintah yang menunjukkan grup mana yang dimiliki (misalnya,ListGroupsForThing) mungkin terus menampilkan grup saat catatan di cloud sedang diperbarui.

Lampirkan kebijakan ke grup benda statis

Anda dapat menggunakan AttachPolicy perintah untuk melampirkan kebijakan ke grup benda statis dan karenanya, dengan ekstensi, ke semua hal dalam grup itu dan hal-hal di salah satu grup turunannya:

$ aws iot attach-policy \ --target "arn:aws:iot:us-west-2:123456789012:thinggroup/LightBulbs" \ --policy-name "myLightBulbPolicy"

AttachPolicyPerintah tidak menghasilkan output apa pun

penting

Anda dapat melampirkan jumlah maksimum dua kebijakan ke grup.

catatan

Kami tidak menyarankan menggunakan informasi identitas pribadi dalam nama kebijakan Anda.

--targetParameternya bisa berupa grup ARN (seperti di atas), sertifikat ARN, atau Identitas Amazon Cognito. Untuk informasi selengkapnya tentang kebijakan, sertifikat, dan otentikasi, lihatAutentikasi.

Untuk informasi selengkapnya, lihat AWS IoT Core kebijakan.

Lepaskan kebijakan dari grup benda statis

Anda dapat menggunakan DetachPolicy perintah untuk melepaskan kebijakan dari grup dan dengan demikian, dengan ekstensi, ke semua hal dalam grup itu dan hal-hal di salah satu grup turunannya:

$ aws iot detach-policy --target "arn:aws:iot:us-west-2:123456789012:thinggroup/LightBulbs" --policy-name "myLightBulbPolicy"

DetachPolicyPerintah tidak menghasilkan output apa pun.

Buat daftar kebijakan yang dilampirkan ke grup benda statis

Anda dapat menggunakan ListAttachedPolicies perintah untuk membuat daftar kebijakan yang dilampirkan ke grup hal statis:

$ aws iot list-attached-policies --target "arn:aws:iot:us-west-2:123456789012:thinggroup/RedLights"

--targetParameternya bisa berupa ARN grup benda (seperti di atas), sertifikat ARN, atau identitas Amazon Cognito.

Tambahkan --recursive parameter opsional untuk menyertakan semua kebijakan yang dilampirkan ke grup induk grup.

ListAttachedPoliciesPerintah mengembalikan daftar kebijakan:

{ "policies": [ "MyLightBulbPolicy" ... ] }

Buat daftar grup untuk kebijakan

Anda dapat menggunakan ListTargetsForPolicy perintah untuk mencantumkan target, termasuk grup apa pun, yang dilampirkan kebijakan:

$ aws iot list-targets-for-policy --policy-name "MyLightBulbPolicy"

Tambahkan --page-size number parameter opsional untuk menentukan jumlah maksimum hasil yang akan dikembalikan untuk setiap kueri, dan --marker string parameter pada panggilan berikutnya untuk mengambil set hasil berikutnya, jika ada.

ListTargetsForPolicyPerintah mengembalikan daftar target dan token yang akan digunakan untuk mengambil lebih banyak hasil:

{ "nextMarker": "string", "targets": [ "string" ... ] }

Dapatkan kebijakan yang efektif untuk suatu hal

Anda dapat menggunakan GetEffectivePolicies perintah untuk membuat daftar kebijakan yang berlaku untuk suatu hal, termasuk kebijakan yang dilampirkan ke grup mana pun yang menjadi miliknya (apakah grup tersebut adalah induk langsung atau leluhur tidak langsung):

$ aws iot get-effective-policies \ --thing-name "MyLightBulb" \ --principal "arn:aws:iot:us-east-1:123456789012:cert/a0c01f5835079de0a7514643d68ef8414ab739a1e94ee4162977b02b12842847"

Gunakan --principal parameter untuk menentukan ARN dari sertifikat yang dilampirkan pada benda itu. Jika Anda menggunakan otentikasi identitas Amazon Cognito, gunakan --cognito-identity-pool-id parameter dan, secara opsional, tambahkan --principal parameter untuk menentukan identitas Amazon Cognito. Jika Anda hanya menentukan--cognito-identity-pool-id, kebijakan yang terkait dengan peran kumpulan identitas tersebut untuk pengguna yang tidak diautentikasi akan dikembalikan. Jika Anda menggunakan keduanya, kebijakan yang terkait dengan peran kumpulan identitas tersebut untuk pengguna yang diautentikasi akan dikembalikan.

--thing-nameParameternya opsional dan dapat digunakan sebagai pengganti --principal parameter. Saat digunakan, kebijakan yang dilampirkan ke grup mana pun yang menjadi miliknya, dan kebijakan yang dilampirkan ke grup induk mana pun dari grup ini (hingga grup root dalam hierarki) dikembalikan.

GetEffectivePoliciesPerintah mengembalikan daftar kebijakan:

{ "effectivePolicies": [ { "policyArn": "string", "policyDocument": "string", "policyName": "string" } ... ] }

Otorisasi uji untuk tindakan MQTT

Anda dapat menggunakan TestAuthorization perintah untuk menguji apakah tindakan MQTT (Publish,Subscribe) diizinkan untuk suatu hal:

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\"]}"

Gunakan --principal parameter untuk menentukan ARN dari sertifikat yang dilampirkan pada benda itu. Jika menggunakan autentikasi Identitas Amazon Cognito, tentukan Identitas Cognito sebagai --principal atau gunakan parameter, atau keduanya. --cognito-identity-pool-id (Jika Anda hanya menentukan kebijakan yang --cognito-identity-pool-id terkait dengan peran kumpulan identitas tersebut untuk pengguna yang tidak diautentikasi akan dipertimbangkan. Jika Anda menggunakan keduanya, kebijakan yang terkait dengan peran kumpulan identitas tersebut untuk pengguna yang diautentikasi akan dipertimbangkan.

Tentukan satu atau beberapa tindakan MQTT yang ingin Anda uji dengan mencantumkan kumpulan sumber daya dan jenis tindakan yang mengikuti parameter. --auth-infos actionTypeBidang harus berisi “PUBLISH”, “SUBSCRIBE”, “RECEIVE”, atau “CONNECT”. resourcesBidang harus berisi daftar ARN sumber daya. Untuk informasi selengkapnya, lihat AWS IoT Core kebijakan.

Anda dapat menguji efek penambahan kebijakan dengan menentukannya dengan --policy-names-to-add parameter. Atau Anda dapat menguji efek penghapusan kebijakan oleh mereka dengan --policy-names-to-skip parameter.

Anda dapat menggunakan --client-id parameter opsional untuk lebih menyempurnakan hasil Anda.

TestAuthorizationPerintah mengembalikan detail tentang tindakan yang diizinkan atau ditolak untuk setiap kumpulan --auth-infos kueri yang Anda tentukan:

{ "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" ] } ] }