Interagisci con il ciclo di vita dei componenti - AWS IoT Greengrass

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Interagisci con il ciclo di vita dei componenti

Utilizza il servizio IPC del ciclo di vita dei componenti per:

  • Aggiorna lo stato del componente sul dispositivo principale.

  • Iscriviti agli aggiornamenti sullo stato dei componenti.

  • Impedisci al nucleus di interrompere il componente per applicare un aggiornamento durante una distribuzione.

  • Metti in pausa e riprendi i processi dei componenti.

Versioni SDK minime

La tabella seguente elenca le versioni minime da utilizzare per interagire con il SDK per dispositivi AWS IoT ciclo di vita dei componenti.

Autorizzazione

Per mettere in pausa o riprendere altri componenti di un componente personalizzato, è necessario definire politiche di autorizzazione che consentano al componente di gestire altri componenti. Per informazioni sulla definizione delle politiche di autorizzazione, vedere. Autorizza i componenti a eseguire operazioni IPC

Le politiche di autorizzazione per la gestione del ciclo di vita dei componenti hanno le seguenti proprietà.

Identificatore del servizio IPC: aws.greengrass.ipc.lifecycle

Operazione Descrizione Risorse

aws.greengrass#PauseComponent

Consente a un componente di mettere in pausa i componenti specificati.

Un nome di componente o * per consentire l'accesso a tutti i componenti.

aws.greengrass#ResumeComponent

Consente a un componente di ripristinare i componenti specificati.

Un nome di componente o * per consentire l'accesso a tutti i componenti.

*

Consente a un componente di mettere in pausa e riprendere i componenti specificati.

Un nome di componente o * per consentire l'accesso a tutti i componenti.

Esempi di politiche di autorizzazione

È possibile fare riferimento al seguente esempio di politica di autorizzazione per configurare le politiche di autorizzazione per i componenti.

Esempio di politica di autorizzazione

Il seguente esempio di politica di autorizzazione consente a un componente di mettere in pausa e riprendere tutti i componenti.

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

Aggiorna lo stato del componente sul dispositivo principale.

Richiesta

La richiesta di questa operazione ha i seguenti parametri:

state

Lo stato da impostare. Questo enum ha LifecycleState i seguenti valori:

  • RUNNING

  • ERRORED

Risposta

Questa operazione non fornisce alcuna informazione nella sua risposta.

SubscribeToComponentUpdates

Iscriviti per ricevere notifiche prima che il software AWS IoT Greengrass Core aggiorni un componente. La notifica specifica se il nucleo verrà riavviato o meno come parte dell'aggiornamento.

Il nucleus invia notifiche di aggiornamento solo se la politica di aggiornamento dei componenti della distribuzione specifica di notificare i componenti. Il comportamento predefinito consiste nel notificare i componenti. Per ulteriori informazioni, vedete Creare distribuzione l'DeploymentComponentUpdatePolicyoggetto che potete fornire quando chiamate l'CreateDeploymentoperazione.

Importante

Le distribuzioni locali non notificano i componenti prima degli aggiornamenti.

Questa operazione è un'operazione di sottoscrizione in cui ci si iscrive a un flusso di messaggi di eventi. Per utilizzare questa operazione, definite un gestore di risposte di flusso con funzioni che gestiscono i messaggi di evento, gli errori e la chiusura dei flussi. Per ulteriori informazioni, consulta Iscriviti ai flussi di eventi IPC.

Tipo di messaggio di evento: ComponentUpdatePolicyEvents

Suggerimento

Puoi seguire un tutorial per imparare a sviluppare un componente che rinvii in modo condizionale gli aggiornamenti dei componenti. Per ulteriori informazioni, consulta Tutorial: Sviluppa un componente Greengrass che rinvii gli aggiornamenti dei componenti.

Richiesta

La richiesta di questa operazione non ha parametri.

Risposta

La risposta di questa operazione contiene le seguenti informazioni:

messages

Il flusso di messaggi di notifica. Questo oggetto contiene ComponentUpdatePolicyEvents le seguenti informazioni:

preUpdateEvent(Python:) pre_update_event

(Facoltativo) Un evento che indica che il nucleo desidera aggiornare un componente. È possibile rispondere con l'DeferComponentUpdateoperazione di conferma o rinviare l'aggiornamento fino a quando il componente non sarà pronto per il riavvio. Questo oggetto contiene PreComponentUpdateEvent le seguenti informazioni:

deploymentId(Python:) deployment_id

L'ID della AWS IoT Greengrass distribuzione che aggiorna il componente.

isGgcRestarting(Python:) is_ggc_restarting

Se il nucleo deve essere riavviato o meno per applicare l'aggiornamento.

postUpdateEvent(Python:) post_update_event

(Facoltativo) Un evento che indica che il nucleo ha aggiornato un componente. Questo oggetto contiene PostComponentUpdateEvent le seguenti informazioni:

deploymentId(Python:) deployment_id

L'ID della AWS IoT Greengrass distribuzione che ha aggiornato il componente.

Nota

Questa funzionalità richiede la versione 2.7.0 o successiva del componente Greengrass nucleus.

DeferComponentUpdate

Riconosci o rimanda l'aggiornamento di un componente con cui lo scopri. SubscribeToComponentUpdates Specificate il tempo di attesa prima che il nucleo verifichi nuovamente se il componente è pronto per procedere con l'aggiornamento del componente. È inoltre possibile utilizzare questa operazione per comunicare al nucleo che il componente è pronto per l'aggiornamento.

Se un componente non risponde alla notifica di aggiornamento del componente, il nucleus attende il periodo di tempo specificato nella politica di aggiornamento dei componenti della distribuzione. Dopo tale timeout, il nucleus procede con la distribuzione. Il timeout predefinito per l'aggiornamento dei componenti è di 60 secondi. Per ulteriori informazioni, vedere Creare distribuzione e l'DeploymentComponentUpdatePolicyoggetto che è possibile fornire quando si chiama l'CreateDeploymentoperazione.

Suggerimento

Puoi seguire un tutorial per imparare a sviluppare un componente che differisca in modo condizionale gli aggiornamenti dei componenti. Per ulteriori informazioni, consulta Tutorial: Sviluppa un componente Greengrass che rinvii gli aggiornamenti dei componenti.

Richiesta

La richiesta di questa operazione ha i seguenti parametri:

deploymentId(Python:) deployment_id

L'ID della AWS IoT Greengrass distribuzione da rinviare.

message

(Facoltativo) Il nome del componente per il quale posticipare gli aggiornamenti.

Il valore predefinito è il nome del componente che effettua la richiesta.

recheckAfterMs(Python:) recheck_after_ms

Il periodo di tempo in millisecondi per il quale posticipare l'aggiornamento. Il nucleo attende questo intervallo di tempo e poi ne invia un altro PreComponentUpdateEvent con cui è possibile eseguire l'individuazione. SubscribeToComponentUpdates

0Specificare di confermare l'aggiornamento. Questo indica al nucleo che il componente è pronto per l'aggiornamento.

Il valore predefinito è zero millisecondi, il che significa che conferma l'aggiornamento.

Risposta

Questa operazione non fornisce alcuna informazione nella sua risposta.

PauseComponent

Questa funzionalità è disponibile per la versione 2.4.0 e successive del componente Greengrass nucleus. AWS IoT Greengrassattualmente non supporta questa funzionalità sui dispositivi Windows core.

Sospende i processi di un componente sul dispositivo principale. Per riprendere un componente, utilizzate l'ResumeComponentoperazione.

È possibile mettere in pausa solo i componenti generici. Se si tenta di mettere in pausa qualsiasi altro tipo di componente, questa operazione genera un. InvalidRequestError

Nota

Questa operazione non può mettere in pausa i processi containerizzati, come i contenitori Docker. Per mettere in pausa e riprendere un contenitore Docker, puoi utilizzare i comandi docker pause e docker unpause.

Questa operazione non mette in pausa le dipendenze dei componenti o i componenti che dipendono dal componente che metti in pausa. Considerate questo comportamento quando mettete in pausa un componente che dipende da un altro componente, poiché il componente dipendente potrebbe riscontrare problemi quando la sua dipendenza viene messa in pausa.

Quando si riavvia o si spegne un componente in pausa, ad esempio durante una distribuzione, il Greengrass nucleus riprende il componente ed esegue il suo ciclo di vita di spegnimento. Per ulteriori informazioni sul riavvio di un componente, vedere. RestartComponent

Importante

Per utilizzare questa operazione, è necessario definire una politica di autorizzazione che conceda il permesso di utilizzare questa operazione. Per ulteriori informazioni, consulta Autorizzazione.

Versioni SDK minime

La tabella seguente elenca le versioni minime da utilizzare per mettere in pausa e riprendere i componenti. SDK per dispositivi AWS IoT

Richiesta

La richiesta di questa operazione ha i seguenti parametri:

componentName(Python:) component_name

Il nome del componente da mettere in pausa, che deve essere un componente generico. Per ulteriori informazioni, consulta Tipi di componenti.

Risposta

Questa operazione non fornisce alcuna informazione nella sua risposta.

ResumeComponent

Questa funzionalità è disponibile per la versione 2.4.0 e successive del componente Greengrass nucleus. AWS IoT Greengrassattualmente non supporta questa funzionalità sui dispositivi Windows core.

Riprende i processi di un componente sul dispositivo principale. Per mettere in pausa un componente, utilizzate l'operazione. PauseComponent

È possibile riprendere solo i componenti in pausa. Se si tenta di riprendere un componente che non è in pausa, questa operazione genera un. InvalidRequestError

Importante

Per utilizzare questa operazione, è necessario definire una politica di autorizzazione che conceda l'autorizzazione a farlo. Per ulteriori informazioni, consulta Autorizzazione.

Versioni SDK minime

La tabella seguente elenca le versioni minime da utilizzare per mettere in pausa e riprendere i componenti. SDK per dispositivi AWS IoT

Richiesta

La richiesta di questa operazione ha i seguenti parametri:

componentName(Python:) component_name

Il nome del componente da riprendere.

Risposta

Questa operazione non fornisce alcuna informazione nella sua risposta.