Interacción con el ciclo de vida del componente - AWS IoT Greengrass

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Interacción con el ciclo de vida del componente

Utilice el servicio IPC del ciclo de vida de los componentes para:

  • Actualizar el estado del componente en el dispositivo principal.

  • Suscribirse a las actualizaciones del estado de los componentes.

  • Evitar que el núcleo detenga el componente para aplicar una actualización durante una implementación.

  • Pausar y reanudar los procesos de los componentes.

Versiones mínimas de SDK

En la siguiente tabla se enumeran las versiones mínimas de las SDK para dispositivos con AWS IoT que debe utilizar para interactuar con el ciclo de vida de los componentes.

Autorización

Para pausar o reanudar otros componentes de un componente personalizado, debe definir políticas de autorización que permitan a su componente administrar otros componentes. Para obtener información sobre cómo definir las políticas de autorización, consulte Autorización de los componentes para realizar operaciones de IPC.

Las políticas de autorización para la administración del ciclo de vida de los componentes tienen las siguientes propiedades.

Identificador de servicio IPC: aws.greengrass.ipc.lifecycle

Operación Descripción Recursos

aws.greengrass#PauseComponent

Permite que un componente detenga los componentes que especifique.

Un nombre de componente o * para permitir el acceso a todos los componentes.

aws.greengrass#ResumeComponent

Permite que un componente reanude los componentes que especifique.

Un nombre de componente o * para permitir el acceso a todos los componentes.

*

Permite que un componente pause y reanude los componentes que especifique.

Un nombre de componente o * para permitir el acceso a todos los componentes.

Ejemplos de políticas de autorización

Puede consultar el siguiente ejemplo de política de autorización con el fin de configurar las políticas de autorización para sus componentes.

ejemplo Ejemplo de política de autorización

El siguiente ejemplo de política de autorización permite a un componente pausar y reanudar todos los 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": [ "*" ] } } } }

UpdateState

Actualice el estado del componente en el dispositivo principal.

Solicitud

Esta solicitud de operación tiene los siguientes parámetros:

state

El estado que se va a establecer. Esta enumeración, LifecycleState, tiene los siguientes valores:

  • RUNNING

  • ERRORED

Respuesta

Esta operación no proporciona ninguna información en su respuesta.

SubscribeToComponentUpdates

Suscríbase para recibir notificaciones antes de que el software AWS IoT Greengrass principal actualice un componente. La notificación especifica si el núcleo se reiniciará o no como parte de la actualización.

El núcleo envía notificaciones de actualización solo si la política de actualización de componentes de la implementación especifica que se notifique a los componentes. El comportamiento predeterminado es notificar a los componentes. Para obtener más información, consulte Crear implementaciones el DeploymentComponentUpdatePolicyobjeto que puede proporcionar al llamar a la CreateDeploymentoperación.

importante

Las implementaciones locales no notifican a los componentes antes de las actualizaciones.

Esta es una operación de suscripción en la que se suscribe a un flujo de mensajes de eventos. Para usar esta operación, defina un identificador de respuesta de flujo con funciones que gestionen los mensajes de eventos, los errores y el cierre del flujo. Para obtener más información, consulte Suscripción a los flujos de eventos de IPC.

Tipo de mensaje del evento: ComponentUpdatePolicyEvents

sugerencia

Puede seguir un tutorial para aprender a desarrollar un componente que aplace condicionalmente las actualizaciones de los componentes. Para obtener más información, consulte Tutorial: Desarrollo de un componente de Greengrass que aplace las actualizaciones de los componentes.

Solicitud

Esta solicitud de la operación no tiene parámetros.

Respuesta

Esta respuesta de operación contiene la siguiente información:

messages

El flujo de mensajes de notificación. Este objeto, ComponentUpdatePolicyEvents, contiene la siguiente información:

preUpdateEvent (Python: pre_update_event)

(Opcional) Un evento que indica que el núcleo quiere actualizar un componente. Puede responder con la operación DeferComponentUpdate para confirmar o aplazar la actualización hasta que el componente esté listo para reiniciarse. Este objeto, PreComponentUpdateEvent, contiene la siguiente información:

deploymentId (Python: deployment_id)

El ID de la AWS IoT Greengrass implementación que actualiza el componente.

isGgcRestarting (Python: is_ggc_restarting)

Si el núcleo necesita reiniciarse o no después de aplicar la actualización.

postUpdateEvent (Python: post_update_event)

(Opcional) Un evento que indica que el núcleo actualizó un componente. Este objeto, PostComponentUpdateEvent, contiene la siguiente información:

deploymentId (Python: deployment_id)

El ID de la AWS IoT Greengrass implementación que actualizó el componente.

nota

Esta característica requiere la versión 2.7.0 o posterior del componente núcleo de Greengrass.

DeferComponentUpdate

Confirme o aplace la actualización de un componente que detecte con SubscribeToComponentUpdates. Debe especificar el tiempo que debe transcurrir antes de que el núcleo vuelva a comprobar si el componente está preparado para continuar con la actualización del componente. También puede utilizar esta operación para indicar al núcleo que su componente está listo para la actualización.

Si un componente no responde a la notificación de actualización del componente, el núcleo espera el tiempo que especifique en la política de actualización de componentes de la implementación. Transcurrido ese tiempo de espera, el núcleo continúa con la implementación. El tiempo de espera predeterminado de la actualización del componente es de 60 segundos. Para obtener más información, consulte Crear implementaciones y el DeploymentComponentUpdatePolicyobjeto que puede proporcionar al llamar a la CreateDeploymentoperación.

sugerencia

Puede seguir un tutorial para aprender a desarrollar un componente que aplace condicionalmente las actualizaciones de los componentes. Para obtener más información, consulte Tutorial: Desarrollo de un componente de Greengrass que aplace las actualizaciones de los componentes.

Solicitud

Esta solicitud de operación tiene los siguientes parámetros:

deploymentId (Python: deployment_id)

El identificador del AWS IoT Greengrass despliegue que se va a aplazar.

message

(Opcional) El nombre del componente cuyas actualizaciones se van a aplazar.

Toma el valor predeterminado del componente que realiza la solicitud.

recheckAfterMs (Python: recheck_after_ms)

El tiempo en milisegundos durante el que se debe aplazar la actualización. El núcleo espera esa cantidad de tiempo y luego envía otro PreComponentUpdateEvent que puede detectar con SubscribeToComponentUpdates.

Especifique 0 si desea confirmar la actualización. Esto indica al núcleo que el componente está listo para la actualización.

El valor predeterminado es cero milisegundos, lo que significa confirmar la actualización.

Respuesta

Esta operación no proporciona ninguna información en su respuesta.

PauseComponent

Esta función está disponible para la versión 2.4.0 y versiones posteriores del componente núcleo de Greengrass. AWS IoT Greengrass actualmente no admite esta función en los dispositivos principales de Windows.

Pausa los procesos de un componente en el dispositivo principal. Para reanudar un componente, utilice la ResumeComponentoperación.

Solo puede pausar los componentes genéricos. Si intenta pausar cualquier otro tipo de componente, esta operación arroja un InvalidRequestError.

nota

Esta operación no puede pausar los procesos contenerizados, como los contenedores de Docker. Para pausar y reanudar un contenedor de Docker, puede usar los comandos docker pause y dockerunpause.

Esta operación no detiene las dependencias de los componentes ni los componentes que dependen del componente que se pausa. Tenga en cuenta este comportamiento al pausar un componente que es una dependencia de otro componente, ya que el componente dependiente puede tener problemas cuando su dependencia está en pausa.

Al reiniciar o apagar un componente en pausa, por ejemplo, durante una implementación, el núcleo de Greengrass reanuda el componente y ejecuta su ciclo de vida de apagado. Para obtener más información sobre reiniciar un componente, consulte RestartComponent.

importante

Para usar esta operación, debe definir una política de autorización que otorgue permiso para usar esta operación. Para obtener más información, consulte Autorización.

Versiones mínimas de SDK

En la siguiente tabla se enumeran las versiones mínimas de las SDK para dispositivos con AWS IoT que debe utilizar para pausar y reanudar los componentes.

Solicitud

Esta solicitud de operación tiene los siguientes parámetros:

componentName (Python: component_name)

El nombre del componente que se va a pausar, que debe ser un componente genérico. Para obtener más información, consulte Tipos de componentes.

Respuesta

Esta operación no proporciona ninguna información en su respuesta.

ResumeComponent

Esta función está disponible para la versión 2.4.0 y versiones posteriores del componente núcleo de Greengrass. AWS IoT Greengrass actualmente no admite esta función en los dispositivos principales de Windows.

Reanuda los procesos de un componente en el dispositivo principal. Para pausar un componente, utilice la PauseComponentoperación.

Solo puede reanudar los componentes pausados. Si intenta reanudar un componente que no está en pausa, esta operación arroja un InvalidRequestError.

importante

Para utilizar esta operación, debe definir una política de autorización que conceda permiso para hacerlo. Para obtener más información, consulte Autorización.

Versiones mínimas de SDK

En la siguiente tabla se enumeran las versiones mínimas de las SDK para dispositivos con AWS IoT que debe utilizar para pausar y reanudar los componentes.

Solicitud

Esta solicitud de operación tiene los siguientes parámetros:

componentName (Python: component_name)

El nombre del componente a reanudar.

Respuesta

Esta operación no proporciona ninguna información en su respuesta.