Grupos de objetos dinâmicos - AWS IoT Core

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Grupos de objetos dinâmicos

Grupos dinâmicos de objetos são criados com base em consultas de pesquisa específicas no registro. Parâmetros de consulta de pesquisa, como conectividade do dispositivo, criação de sombra do dispositivo e dados de violações de AWS IoT Device Defender dão suporte a isso. Grupos de objetos dinâmicos exigem que a indexação de frotas seja habilitada para indexar, pesquisar e agregar os dados dos dispositivos. Você pode visualizar as objetos em um grupo de objetos dinâmico usando uma consulta de pesquisa de indexação de frota antes de criá-los. Para ter mais informações, consulte Indexação de frotas e Sintaxe de consulta.

nota

As operações dinâmicas de grupos de objetos são medidas em operações de registro. Para obter mais informações, consulte AWS IoT Core Detalhes de medição adicionais.

Os grupos de objetos dinâmicas diferem dos grupos de objetos estáticas das seguintes maneiras:

  • A associação de objetos não é explicitamente definida. Para criar um grupo de objetos dinâmico, defina uma string de consulta de pesquisa para determinara a associação ao grupo.

  • Grupos de objetos dinâmicos não podem fazer parte de uma hierarquia.

  • Grupos de objetos dinâmicos não podem ter políticas aplicadas a eles.

  • Use um conjunto diferente de comandos para criar, atualizar e excluir grupos de objetos dinâmicas. Para todas as outras operações, você usa os mesmos comandos para os dois tipos de grupos de objetos.

  • O número de grupos dinâmicos por grupo Conta da AWS é limitado.

  • Não use informações de identificação pessoal nos nomes de grupo de objetos. O nome do grupo de objetos pode aparecer em comunicações e relatórios não criptografados.

Para obter mais informações sobre grupos de objetos estáticas, consulte Grupos de objetos estáticas.

Casos de uso de grupos objetos dinâmicos

Você pode usar grupos de objetos dinâmicos para os seguintes casos de uso:

Especifique um grupo de objetos dinâmico como o destino para um trabalho

Criar um trabalho contínuo com um grupo dinâmico como destino permite que você direcione automaticamente os dispositivos quando eles atenderem aos critérios desejados. Os critérios podem ser o estado de conectividade ou qualquer critério armazenado no registro ou na sombra, como versão ou modelo do software. Se um objeto não aparecer no grupo de objetos dinâmico, ele não receberá do trabalho o documento de trabalho.

Por exemplo, se a frota de dispositivos precisar de uma atualização de firmware para minimizar o risco de interrupção durante o processo de atualização, e você só quiser atualizar o firmware em dispositivos com duração de bateria maior que 80%. Você pode criar um grupo dinâmico chamado 80, PercentBatteryLife que inclui apenas dispositivos com duração de bateria acima de 80% e usá-lo como alvo para seu trabalho. Somente dispositivos que atenderem aos critérios de duração da bateria receberão a atualização do firmware. Conforme os dispositivos atingem os critérios de 80% de duração da bateria, eles são adicionados automaticamente ao grupo de coisas dinâmico e receberão a atualização do firmware.

Você também pode ter vários modelos de dispositivos com firmware ou sistema operacional diferentes, exigindo versões diferentes de novas atualizações de software. Esse é o caso de uso mais comum para grupos dinâmicos com trabalhos contínuos, em que você pode criar um grupo dinâmico para cada combinação de modelo de dispositivo, firmware e sistema operacional. Em seguida, você pode configurar trabalhos contínuos para cada um desses grupos dinâmicos para fazer push de atualizações de software à medida que os dispositivos se tornam automaticamente membros desses grupos com base nos critérios definidos.

Para obter mais informações sobre como especificar grupos de coisas como destinos de trabalho, consulte CreateJob.

Use alterações dinâmicas de associação ao grupo para realizar as ações desejadas

Sempre que um dispositivo é adicionado ou removido de um grupo dinâmico, uma notificação é enviada para um MQTT tópico como parte das atualizações de eventos do registro. Você pode configurar AWS IoT Core regras para interagir com os AWS serviços com base nas atualizações dinâmicas dos membros do grupo e realizar as ações desejadas. Exemplos de ações incluem escrever Amazon DynamoDB, invocar uma função Lambda ou enviar uma notificação para a Amazon. SNS

Adicione dispositivos a um grupo dinâmico para detecção automática de violações

AWS IoT Device Defender Os clientes do Detect podem definir um perfil de segurança em um grupo dinâmico. Os dispositivos do grupo de objetos dinâmico são detectados automaticamente por violações pelo perfil de segurança definido no grupo.

Defina níveis de log em grupos de objetos dinâmicos para observar dispositivos com registro em log detalhado

Você pode especificar um nível de log em um grupo de objetos dinâmico. Isso é útil se você quer personalizar apenas o nível e os detalhes do registro para dispositivos que atendam a determinados critérios. Por exemplo, se você suspeitar que dispositivos com determinada versão de firmware estão causando erros no tópico publicado de uma regra específica, convém definir um registro detalhado para depurar esses problemas. Nesse caso, você pode criar um grupo dinâmico para todos os dispositivos que tenham essa versão de firmware, que presumimos que esteja armazenada como um atributo do registro ou em uma sombra do dispositivo. Em seguida, você pode definir um nível de depuração, com o destino de registro definido como esse grupo de objetos dinâmico. Para obter mais informações sobre registros detalhados, consulte Monitorar AWS IoT usando registros. CloudWatch Para obter mais informações sobre como especificar um nível de log para um grupo de objetos específico, consulte Configure resource-specific logging in AWS IoT.

Criar grupo de objetos dinâmicas

Use o comando CreateDynamicThingGroup para criar um grupo de objetos dinâmicas. Para criar um grupo dinâmico de coisas para o PercentBatteryLife cenário 80, use o create-dynamic-thing-group CLI comando:

$ aws iot create-dynamic-thing-group --thing-group-name "80PercentBatteryLife" --query-string "attributes.batterylife80"
nota

Não use informações de identificação pessoal nos nomes de grupo de objetos dinâmico.

O comando CreateDynamicThingGroup retorna uma resposta. A resposta contém o nome do índice, a string de consulta, a versão da consulta, o nome do grupo de coisas, o ID do grupo de coisas e o Amazon Resource Name (ARN) do seu grupo de coisas:

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

A criação de grupos de objetos dinâmico não acontece de uma só vez. A alocação do grupo de objetos dinâmicas leva tempo para ser concluída. Quando você cria um grupo de objetos dinâmico, o status do grupo é definido como BUILDING. Quando a alocação é concluída, o status muda para ACTIVE. Para verificar o status do seu grupo dinâmico de coisas, use o DescribeThingGroupcomando.

Descrever um grupo de objetos dinâmicas

Use o comando DescribeThingGroup para obter informações sobre um grupo de objetos dinâmicas:

$ aws iot describe-thing-group --thing-group-name "80PercentBatteryLife"

O comando DescribeThingGroup retorna informações sobre o grupo especificado:

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

Executar DescribeThingGroup em um grupo de objetos dinâmico retorna atributos específicos para grupos de objetos dinâmicos. Exemplos de atributos de retorno são o queryString e o status.

O status de um grupo de objetos dinâmicas pode ter os seguintes valores:

ACTIVE

O grupo de objetos dinâmicas está pronto para uso.

BUILDING

O grupo de objetos dinâmicas está sendo criado e a associação de objetos está sendo processada.

REBUILDING

A associação do grupo de objetos dinâmicas está sendo atualizada, seguindo o ajuste da consulta de pesquisa do grupo.

nota

Depois de criar um grupo de objetos dinâmicas, use-o independentemente do status. Somente grupos de objetos dinâmicas com status ACTIVE incluem todas as objetos que correspondem à consulta de pesquisa para esse grupo de objetos dinâmicas. Grupos de objetos dinâmicos com status BUILDING e REBUILDING podem não incluir todas as objetos que correspondem à consulta de pesquisa.

Atualizar um grupo de objetos dinâmicas

Use o comando UpdateDynamicThingGroup para atualizar os atributos de um grupo de objetos dinâmicas, incluindo a consulta de pesquisa do grupo. O comando a seguir atualiza dois atributos. Um é a descrição do grupo de objetos e o outra é a sequência de caracteres de consulta que altera os critérios de associação para duração da bateria >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"

O comando UpdateDynamicThingGroup retorna uma resposta que contém o número da versão do grupo depois da atualização:

{ "version": 2 }

A atualização de um grupo de objetos dinâmico não acontece de uma só vez. A alocação do grupo de objetos dinâmicas leva tempo para ser concluída. Ao atualizar um grupo de objetos dinâmico, o status do grupo muda para REBUILDING e o grupo atualiza sua associação. Quando a alocação é concluída, o status muda para ACTIVE. Para verificar o status do seu grupo dinâmico de coisas, use o DescribeThingGroupcomando.

Excluir um grupo de objetos dinâmicas

Use o comando DeleteDynamicThingGroup para excluir um grupo de objetos dinâmicas:

$ aws iot delete-dynamic-thing-group --thing-group-name "80PercentBatteryLife"

O comando DeleteDynamicThingGroup não produz saída.

Os comandos que mostram a quais grupos um objeto pertence (por exemplo, ListGroupsForThing) podem continuar a mostrar o grupo enquanto os registros na nuvem estão sendo atualizados.

Limitações do grupo de objetos estático e dinâmico

Grupos de objetos dinâmicos e grupos de objetos estáticos compartilham as mesmas limitações:

  • O número de atributos que um grupo de objetos pode ter é limitado.

  • O número de grupos aos quais um objeto pode pertencer é limitado.

  • Não é possível renomear os grupos de objetos.

  • Nomes de objetos não podem conter caracteres internacionais, como, û, é e ñ.

Limitações do grupo de objetos dinâmico

Grupos de objetos dinâmicos têm as seguintes limitações:

Indexação de frotas

Com o serviço de indexação de frotas ativado, é possível realizar consultas de pesquisa em sua frota de dispositivos. Você pode criar e gerenciar grupos dinâmicos depois de preencher a indexação da frota. O tamanho da frota de dispositivos registrada no Nuvem AWS afeta diretamente o tempo de conclusão do processo de preenchimento. Depois de ativar o serviço de indexação da frota para grupos de objetos dinâmicas, você não poderá desativá-lo até que todos os seus grupos de objetos dinâmicas sejam excluídos.

nota

Se você tiver permissões para consultar o índice de frota, você poderá acessar os dados das objetos em toda a frota.

O número de grupos de objetos dinâmicas é limitado

O número de grupos de objetos dinâmicas é limitado.

Comandos bem-sucedidos podem registrar erros

Ao criar ou atualizar um grupo de objetos dinâmico, é possível que alguns objetos possam ser qualificados para inclusão em um grupo de objetos dinâmico, mas ainda não tenham sido adicionados a ele. Esse cenário causará um comando de criação ou atualização bem-sucedido ao registrar um erro e gerar uma métrica de AddThingToDynamicThingGroupsFailed. Uma única métrica pode representar várias entradas de log.

Uma entrada de registro de erros no CloudWatch registro é criada quando ocorre o seguinte:

  • Um objeto elegível não pode ser adicionado a um grupo de objetos dinâmico.

  • Um objeto é removido de um grupo dinâmico para ser adicionado a outro grupo.

Quando um objeto se qualifica para ser adicionado a um grupo de objetos dinâmico, considere o seguinte:

  • A objeto já está no máximo possível de grupos? (Consulte limites)

    • NÃO: o objeto é adicionada ao grupo de objetos dinâmicas.

    • YES: A coisa é membro de algum grupo dinâmico de coisas?

      • NÃO: o objeto não pode ser adicionada ao grupo dinâmico, um erro é registrado e uma métrica AddThingToDynamicThingGroupsFailed é gerada.

      • YES: O grupo dinâmico ao qual se juntar é mais antigo do que qualquer grupo dinâmico do qual a coisa já seja membro?

Quando um objeto em um grupo de objetos dinâmico não satisfaz mais a consulta de pesquisa, o objeto é removido do grupo de objetos dinâmico. Da mesma forma, quando um objeto é atualizado para atender a consulta de pesquisa de um grupo de objetos dinâmico, ele é adicionado ao grupo como já descrito. Essas adições e remoções são normais e não produzem entradas de log de erros.

Com overrideDynamicGroups habilitado, os grupos estáticos terão prioridade sobre os grupos dinâmicos

O número de grupos aos quais um objeto pode pertencer é limitado. Quando você usa os UpdateThingGroupsForThingcomandos AddThingToThingGroupou para atualizar a associação de coisas, adicionar o --overrideDynamicGroups parâmetro dá prioridade aos grupos de coisas estáticos sobre grupos de coisas dinâmicas.

Ao adicionar um objeto a um grupo de objetos estáticas, considere o seguinte:

  • A objeto já pertence ao número máximo de grupos?

    • NÃO: o objeto é adicionada ao grupo de objetos estáticas.

    • YES: A coisa está em algum grupo dinâmico?

      • NÃO: o objeto não pode ser adicionada ao grupo de objetos. O comando gera uma exceção.

      • YES: Foi --overrideDynamicGroups ativado?

        • NÃO: o objeto não pode ser adicionada ao grupo de objetos. O comando gera uma exceção.

        • YES: a coisa é removida do grupo dinâmico de coisas criado mais recentemente, um erro é registrado e uma AddThingToDynamicThingGroupsFailedmétrica é gerada para o grupo de coisas dinâmicas do qual a coisa foi removida. Depois, o objeto é adicionada ao grupo de objetos estáticas.

Os grupos de objetos dinâmicas mais antigos têm prioridade sobre os mais recentes

O número de grupos aos quais um objeto pode pertencer é limitado. Quando uma operação de criação ou atualização cria elegibilidade de grupo adicional para um objeto e o objeto atinge o limite de grupo, é possível remover de outro grupo de objetos dinâmico para possibilitar essa adição. Para obter mais informações sobre como isso ocorre, consulte Comandos bem-sucedidos podem registrar erros e Com overrideDynamicGroups habilitado, os grupos estáticos terão prioridade sobre os grupos dinâmicos para obter exemplos.

Quando um objeto é removida de um grupo dinâmico, um erro é registrado e um evento é gerado.

Você não pode aplicar políticas a grupos de objetos dinâmicas

A tentativa de aplicar uma política a um grupo dinâmico gera uma exceção.

A associação do grupo de objetos dinâmicas é eventualmente consistente

Somente o estado final de um objeto é avaliada para o registro. Os estados intermediários podem ser ignorados se forem atualizados rapidamente. Evite associar uma regra ou um trabalho, a um grupo de objetos dinâmicas cuja associação depende de um estado intermediário.