Interaja com o ciclo de vida dos componentes - AWS IoT Greengrass

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á.

Interaja com o ciclo de vida dos componentes

Use o serviço IPC do ciclo de vida do componente para:

  • Atualize o estado do componente no dispositivo principal.

  • Assine as atualizações do estado do componente.

  • Evite que o núcleo interrompa o componente para aplicar uma atualização durante uma implantação.

  • Pausa e retomada dos processos dos componentes.

Versões mínimas do SDK

A tabela a seguir lista as versões mínimas do AWS IoT Device SDK que você deve usar para interagir com o ciclo de vida do componente.

Autorização

Para pausar ou retomar outros componentes a partir de um componente personalizado, você deve definir políticas de autorização que permitam que seu componente gerencie outros componentes. Para obter informações sobre a definição de políticas de autorização, consulte Autorizar componentes a realizar operações IPC.

As políticas de autorização para gerenciamento do ciclo de vida dos componentes têm as seguintes propriedades.

Identificador de serviço IPC: aws.greengrass.ipc.lifecycle

Operation Descrição Recursos

aws.greengrass#PauseComponent

Permite que um componente pause os componentes que você especificar.

Um nome de componente ou * para permitir o acesso a todos os componentes.

aws.greengrass#ResumeComponent

Permite que um componente retome os componentes que você especificar.

Um nome de componente ou * para permitir o acesso a todos os componentes.

*

Permite que um componente pause e retome os componentes que você especificar.

Um nome de componente ou * para permitir o acesso a todos os componentes.

Exemplos de política de autorização

Consulte o exemplo de política de autorização a seguir para configurar políticas de autorização para seus componentes.

exemplo Exemplo de política de autorização

O exemplo de política de autorização a seguir permite que um componente pause e retome todos os componentes.

{ "accessControl": { "aws.greengrass.ipc.lifecycle": { "com.example.MyLocalLifecycleComponent:lifecycle:1": { "policyDescription": "Allows access to pause/resume all components.", "operations": [ "aws.greengrass#PauseComponent", "aws.greengrass#ResumeComponent" ], "resources": [ "*" ] } } } }

Atualizar estado

Atualize o estado do componente no dispositivo principal.

Solicitação

A solicitação dessa operação tem os seguintes parâmetros:

state

O estado a ser definido. Esse enumerador, LifecycleState, tem os seguintes valores:

  • RUNNING

  • ERRORED

Resposta

Essa operação não fornece nenhuma informação em sua resposta.

Inscreva-se para receber atualizações de componentes

Inscreva-se para receber notificações antes que o software AWS IoT Greengrass Core atualize um componente. A notificação especifica se o núcleo será reiniciado ou não como parte da atualização.

O núcleo envia notificações de atualização somente se a política de atualização de componentes da implantação especificar a notificação dos componentes. O comportamento padrão é notificar componentes. Para obter mais informações, consulte Criar implantações e o objeto DeploymentComponentUpdatePolicy que você pode fornecer ao chamar a operação CreateDeployment.

Importante

As implantações locais não notificam os componentes antes das atualizações.

Essa operação é uma operação de assinatura em que você assina um fluxo de mensagens de eventos. Para usar essa operação, defina um manipulador de resposta de fluxo com funções que manipulam mensagens de eventos, erros e encerramento de fluxo. Para ter mais informações, consulte Inscreva-se em transmissões de IPC eventos.

Tipo de mensagem do evento: ComponentUpdatePolicyEvents

dica

Você pode seguir um tutorial para aprender como desenvolver um componente que adia condicionalmente as atualizações de componentes. Para ter mais informações, consulte Tutorial: Desenvolver um componente do Greengrass que adia as atualizações de componentes.

Solicitação

A solicitação dessa operação não tem nenhum parâmetro.

Resposta

A resposta dessa operação tem as seguintes informações:

messages

O fluxo de mensagens de notificação. Esse objeto, ComponentUpdatePolicyEvents, contém as seguintes informações:

preUpdateEvent (Python: pre_update_event)

(Opcional) Um evento que indica que o núcleo deseja atualizar um componente. Você pode responder com a DeferComponent Update operação para confirmar ou adiar a atualização até que seu componente esteja pronto para ser reiniciado. Esse objeto, PreComponentUpdateEvent, contém as seguintes informações:

deploymentId (Python: deployment_id)

O ID da AWS IoT Greengrass implantação que atualiza o componente.

isGgcRestarting (Python: is_ggc_restarting)

Se o núcleo precisa ou não reiniciar para aplicar a atualização.

postUpdateEvent (Python: post_update_event)

(Opcional) Um evento que indica que o núcleo atualizou um componente. Esse objeto, PostComponentUpdateEvent, contém as seguintes informações:

deploymentId (Python: deployment_id)

O ID da AWS IoT Greengrass implantação que atualizou o componente.

nota

Esse recurso requer a versão 2.7.0 ou posterior do componente do núcleo do Greengrass.

DeferComponent Update

Reconheça ou adie uma atualização de componente que você descobriu comInscreva-se para receber atualizações de componentes. Você especifica a quantidade de tempo de espera antes que o núcleo verifique novamente se seu componente está pronto para permitir que a atualização do componente continue. Você também pode usar essa operação para informar ao núcleo que seu componente está pronto para a atualização.

Se um componente não responder à notificação de atualização do componente, o núcleo aguardará a quantidade de tempo especificada na política de atualização de componentes da implantação. Após esse tempo limite, o núcleo prossegue com a implantação. O tempo limite padrão da atualização do componente é 60 segundos. Para obter mais informações, consulte Criar implantações e o objeto DeploymentComponentUpdatePolicy que você pode fornecer ao chamar a operação CreateDeployment.

dica

Você pode seguir um tutorial para aprender como desenvolver um componente que adia condicionalmente as atualizações de componentes. Para ter mais informações, consulte Tutorial: Desenvolver um componente do Greengrass que adia as atualizações de componentes.

Solicitação

A solicitação dessa operação tem os seguintes parâmetros:

deploymentId (Python: deployment_id)

O ID da implantação do AWS IoT Greengrass a ser adiada.

message

(Opcional) O nome do componente para o qual adiar as atualizações.

O padrão é o nome do componente que faz a solicitação.

recheckAfterMs (Python: recheck_after_ms)

A quantidade de tempo em milissegundos para adiar a atualização. O núcleo espera por esse período de tempo e depois envia outro PreComponentUpdateEvent que você pode descobrir com. Inscreva-se para receber atualizações de componentes

Especifique 0 para confirmar a atualização. Isso informa ao núcleo que seu componente está pronto para a atualização.

O padrão é zero milissegundos, o que significa confirmar a atualização.

Resposta

Essa operação não fornece nenhuma informação em sua resposta.

Componente de pausa

Esse recurso está disponível para a versão 2.4.0 e posterior do componente de núcleo do Greengrass. AWS IoT Greengrassatualmente não oferece suporte a esse recurso nos dispositivos principais do Windows.

Pausa dos processos de um componente no dispositivo principal. Para retomar um componente, use a operação ResumeComponent.

Você pode pausar somente componentes genéricos. Se você tentar pausar qualquer outro tipo de componente, essa operação lançará um. InvalidRequestError

nota

Essa operação não pode pausar processos em contêineres, como contêineres Docker. Para pausar e retomar um contêiner do Docker, você pode usar os comandos docker pause e docker unpause.

Essa operação não pausa dependências de componentes ou componentes que dependem do componente que você pausa. Considere esse comportamento ao pausar um componente que é uma dependência de outro componente, pois o componente dependente pode encontrar problemas quando sua dependência é pausada.

Quando você reinicia ou desliga um componente pausado, como por meio de uma implantação, o núcleo do Greengrass retoma o componente e executa seu ciclo de vida de desligamento. Para obter mais informações sobre a reinicialização de um componente, consulte Componente de reinicialização.

Importante

Para usar essa operação, você deve definir uma política de autorização que conceda permissão para usar essa operação. Para ter mais informações, consulte Autorização.

Versões mínimas do SDK

A tabela a seguir lista as versões mínimas do AWS IoT Device SDK que você deve usar para pausar e retomar componentes.

Solicitação

A solicitação dessa operação tem os seguintes parâmetros:

componentName (Python: component_name)

O nome do componente a ser pausa, que deve ser um componente genérico. Para ter mais informações, consulte Tipos de componente.

Resposta

Essa operação não fornece nenhuma informação em sua resposta.

Componente de currículo

Esse recurso está disponível para a versão 2.4.0 e posterior do componente de núcleo do Greengrass. AWS IoT Greengrassatualmente não oferece suporte a esse recurso nos dispositivos principais do Windows.

Retomada dos processos de um componente no dispositivo principal. Para pausar um componente, use a operação PauseComponent.

Você pode retomar somente os componentes pausados. Se você tentar retomar um componente que não está pausado, essa operação gera um. InvalidRequestError

Importante

Para usar essa operação, você deve definir uma política de autorização que conceda permissão para fazer isso. Para ter mais informações, consulte Autorização.

Versões mínimas do SDK

A tabela a seguir lista as versões mínimas do AWS IoT Device SDK que você deve usar para pausar e retomar componentes.

Solicitação

A solicitação dessa operação tem os seguintes parâmetros:

componentName (Python: component_name)

O nome do componente a ser retomado.

Resposta

Essa operação não fornece nenhuma informação em sua resposta.