View a markdown version of this page

Creare distribuzione - 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à.

Creare distribuzione

È possibile creare una distribuzione destinata a un oggetto o a un gruppo di oggetti.

Quando si crea una distribuzione, si configurano i componenti software da distribuire e la modalità di distribuzione del processo di distribuzione sui dispositivi di destinazione. È possibile definire la distribuzione nel file JSON fornito a. AWS CLI

Il target di distribuzione determina i dispositivi su cui si desidera eseguire i componenti. Per eseguire la distribuzione su un dispositivo principale, specifica un elemento. Per eseguire la distribuzione su più dispositivi principali, specifica un gruppo di oggetti che includa tali dispositivi. Per ulteriori informazioni su come configurare i gruppi di oggetti, consulta Gruppi di oggetti statici e Gruppi di oggetti dinamici nella Guida per gli AWS IoT sviluppatori.

Segui i passaggi descritti in questa sezione per creare una distribuzione su una destinazione. Per ulteriori informazioni su come aggiornare i componenti software su una destinazione con una distribuzione, vedere. Rivedi le distribuzioni

avvertimento

L'CreateDeploymentoperazione può disinstallare i componenti dai dispositivi principali. Se un componente è presente nella distribuzione precedente e non nella nuova distribuzione, il dispositivo principale disinstalla quel componente. Per evitare di disinstallare i componenti, utilizza innanzitutto l'ListDeploymentsoperazione per verificare se la destinazione per la distribuzione ha già una distribuzione esistente. Quindi, utilizza l'GetDeploymentoperazione per iniziare da quella distribuzione esistente quando crei una nuova distribuzione.

Per creare una distribuzione (AWS CLI)
  1. Crea un file chiamatodeployment.json, quindi copia il seguente oggetto JSON nel file. Sostituiscilo targetArn con l'ARN dell' AWS IoT oggetto o del gruppo di oggetti a cui destinare la distribuzione. Gli ARN di oggetti e gruppi di oggetti hanno il seguente formato:

    • Oggetto: arn:aws:iot:region:account-id:thing/thingName

    • Gruppo di oggetti: arn:aws:iot:region:account-id:thinggroup/thingGroupName

    { "targetArn": "targetArn" }
  2. Controlla se il target di distribuzione ha una distribuzione esistente che desideri rivedere. Esegui questa operazione:

    1. Esegui il comando seguente per elencare le distribuzioni per il target di distribuzione. Sostituisci targetArn con l'ARN dell' AWS IoT oggetto o del gruppo di oggetti di destinazione.

      aws greengrassv2 list-deployments --target-arn targetArn

      La risposta contiene un elenco con l'ultima distribuzione per la destinazione. Se la risposta è vuota, la destinazione non dispone di una distribuzione esistente e puoi passare a questa. Passo 3 Altrimenti, copialo deploymentId dalla risposta per utilizzarlo nel passaggio successivo.

      Nota

      È inoltre possibile modificare una distribuzione diversa dalla revisione più recente per la destinazione. Specifica l'--history-filter ALLargomento per elencare tutte le distribuzioni per la destinazione. Quindi, copia l'ID della distribuzione che desideri modificare.

    2. Esegui il comando seguente per ottenere i dettagli della distribuzione. Questi dettagli includono metadati, componenti e configurazione del lavoro. Sostituisci deploymentId con l'ID del passaggio precedente.

      aws greengrassv2 get-deployment --deployment-id deploymentId

      La risposta contiene i dettagli della distribuzione.

    3. Copia una delle seguenti coppie chiave-valore dalla risposta del comando precedente in. deployment.json È possibile modificare questi valori per la nuova distribuzione.

      • deploymentName— Il nome della distribuzione.

      • components— I componenti della distribuzione. Per disinstallare un componente, rimuovilo da questo oggetto.

      • deploymentPolicies— Le politiche della distribuzione.

      • iotJobConfiguration— La configurazione del processo di distribuzione.

      • tags— I tag della distribuzione.

  3. (Facoltativo) Definire un nome per la distribuzione. Sostituisci deploymentName con il nome della distribuzione.

    { "targetArn": "targetArn", "deploymentName": "deploymentName" }
  4. Aggiungi ogni componente per distribuire i dispositivi di destinazione. A tale scopo, aggiungete coppie chiave-valore all'componentsoggetto, dove la chiave è il nome del componente e il valore è un oggetto che contiene i dettagli di quel componente. Specificate i seguenti dettagli per ogni componente che aggiungete:

    • version— La versione del componente da distribuire.

    • configurationUpdate— L'aggiornamento della configurazione da implementare. L'aggiornamento è un'operazione di patch che modifica la configurazione esistente del componente su ciascun dispositivo di destinazione o la configurazione predefinita del componente se non esiste sul dispositivo di destinazione. È possibile specificare i seguenti aggiornamenti di configurazione:

      • Reset updates (reset) — (Facoltativo) Un elenco di puntatori JSON che definiscono i valori di configurazione da ripristinare ai valori predefiniti sul dispositivo di destinazione. Il software AWS IoT Greengrass principale applica gli aggiornamenti di ripristino prima di applicare gli aggiornamenti di unione. Per ulteriori informazioni, consulta Reimposta gli aggiornamenti.

      • Merge updates (merge) — (Facoltativo) Un documento JSON che definisce i valori di configurazione da unire nel dispositivo di destinazione. È necessario serializzare il documento JSON come stringa. Per ulteriori informazioni, consulta Unisci gli aggiornamenti.

    • runWith— (Facoltativo) Le opzioni di processo di sistema utilizzate dal software AWS IoT Greengrass Core per eseguire i processi di questo componente sul dispositivo principale. Se si omette un parametro nell'runWithoggetto, il software AWS IoT Greengrass Core utilizza i valori predefiniti configurati nel componente Greengrass Nucleus.

      È possibile specificare una delle seguenti opzioni:

      • posixUser— L'utente del sistema POSIX e, facoltativamente, il gruppo da utilizzare per eseguire questo componente sui dispositivi core Linux. L'utente e il gruppo, se specificato, devono esistere su ogni dispositivo principale Linux. Specifica l'utente e il gruppo separati da due punti (:) nel seguente formato: user:group. Il gruppo è facoltativo. Se non si specifica un gruppo, il software AWS IoT Greengrass principale utilizza il gruppo primario per l'utente. Per ulteriori informazioni, consulta Configurare l'utente che esegue i componenti.

      • windowsUser— L'utente Windows da utilizzare per eseguire questo componente sui dispositivi Windows Core. L'utente deve esistere su ogni dispositivo principale di Windows e il nome e la password devono essere archiviati nell'istanza di Credentials Manager dell' LocalSystem account. Per ulteriori informazioni, consulta Configurare l'utente che esegue i componenti.

        Questa funzionalità è disponibile per la versione 2.5.0 e successive del componente Greengrass nucleus.

      • systemResourceLimits— I limiti delle risorse di sistema da applicare ai processi di questo componente. È possibile applicare i limiti delle risorse di sistema ai componenti Lambda generici e non containerizzati. Per ulteriori informazioni, consulta Configura i limiti delle risorse di sistema per i componenti.

        Puoi specificare una delle seguenti opzioni:

        • cpus La quantità massima di tempo di CPU che i processi di questo componente possono utilizzare sul dispositivo principale. Il tempo totale della CPU di un dispositivo principale è equivalente al numero di core CPU del dispositivo. Ad esempio, su un dispositivo principale con 4 core CPU, puoi impostare questo valore su per 2 limitare i processi di questo componente al 50% di utilizzo di ciascun core della CPU. Su un dispositivo con 1 core CPU, puoi impostare questo valore su 0.25 per limitare i processi di questo componente al 25% di utilizzo della CPU. Se imposti questo valore su un numero maggiore del numero di AWS IoT Greengrass core della CPU, il software Core non limita l'utilizzo della CPU del componente.

        • memory La quantità massima di RAM (in kilobyte) che i processi di questo componente possono utilizzare sul dispositivo principale.

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

     

    Esempio Esempio di aggiornamento della configurazione di base

    L'componentsoggetto di esempio seguente specifica di distribuire un componentecom.example.PythonRuntime, che prevede un parametro di configurazione denominato. pythonVersion

    { "targetArn": "targetArn", "deploymentName": "deploymentName", "components": { "com.example.PythonRuntime": { "componentVersion": "1.0.0", "configurationUpdate": { "merge": "{\"pythonVersion\":\"3.7\"}" } } } }
    Esempio Esempio di aggiornamento della configurazione con aggiornamenti di ripristino e unione

    Prendiamo in considerazione un esempio di componente industriale del dashboardcom.example.IndustrialDashboard, con la seguente configurazione predefinita.

    { "name": null, "mode": "REQUEST", "network": { "useHttps": true, "port": { "http": 80, "https": 443 }, }, "tags": [] }

    Il seguente aggiornamento di configurazione specifica le seguenti istruzioni:

    1. Reimposta l'impostazione HTTPS al valore predefinito (true).

    2. Reimposta l'elenco dei tag industriali su un elenco vuoto.

    3. Unisci un elenco di tag industriali che identificano i flussi di dati di temperatura e pressione per due caldaie.

    { "reset": [ "/network/useHttps", "/tags" ], "merge": { "tags": [ "/boiler/1/temperature", "/boiler/1/pressure", "/boiler/2/temperature", "/boiler/2/pressure" ] } }

    L'componentsoggetto di esempio seguente specifica l'implementazione di questo componente del dashboard industriale e dell'aggiornamento della configurazione.

    { "targetArn": "targetArn", "deploymentName": "deploymentName", "components": { "com.example.IndustrialDashboard": { "componentVersion": "1.0.0", "configurationUpdate": { "reset": [ "/network/useHttps", "/tags" ], "merge": "{\"tags\":[\"/boiler/1/temperature\",\"/boiler/1/pressure\",\"/boiler/2/temperature\",\"/boiler/2/pressure\"]}" } } } }
  5. (Facoltativo) Definire le politiche di distribuzione per la distribuzione. È possibile configurare quando i dispositivi principali possono applicare una distribuzione in sicurezza o cosa fare se un dispositivo principale non riesce ad applicare la distribuzione. A tale scopo, aggiungi un deploymentPolicies oggetto e deployment.json quindi esegui una delle seguenti operazioni:

    1. (Facoltativo) Specificate la politica di aggiornamento dei componenti (componentUpdatePolicy). Questa politica definisce se la distribuzione consente o meno ai componenti di posticipare un aggiornamento fino a quando non sono pronti per l'aggiornamento. Ad esempio, potrebbe essere necessario ripulire le risorse o completare azioni critiche prima di poter riavviarsi per applicare un aggiornamento. Questa politica definisce anche il tempo a disposizione dei componenti per rispondere a una notifica di aggiornamento.

      Questa policy è un oggetto con i seguenti parametri:

      • action— (Facoltativo) Se notificare o meno i componenti e attendere che segnalino quando sono pronti per l'aggiornamento. Seleziona una delle opzioni seguenti:

        • NOTIFY_COMPONENTS: l'implementazione avvisa ogni componente prima che venga interrotto e aggiornato. I componenti possono utilizzare l'operazione SubscribeToComponentUpdates IPC per ricevere queste notifiche.

        • SKIP_NOTIFY_COMPONENTS: l'implementazione non avvisa i componenti né attende che vengano aggiornati in sicurezza.

        L’impostazione predefinita è NOTIFY_COMPONENTS.

      • timeoutInSecondsIl tempo in secondi di cui ogni componente ha a disposizione per rispondere a una notifica di aggiornamento con l'operazione DeferComponentUpdate IPC. Se il componente non risponde entro questo lasso di tempo, la distribuzione procede sul dispositivo principale.

        Il valore predefinito è 60 secondi.

    2. (Facoltativo) Specificare la politica di convalida della configurazione (). configurationValidationPolicy Questa politica definisce il tempo a disposizione di ciascun componente per convalidare un aggiornamento di configurazione da una distribuzione. I componenti possono utilizzare l'operazione SubscribeToValidateConfigurationUpdates IPC per sottoscrivere le notifiche relative ai propri aggiornamenti di configurazione. Quindi, i componenti possono utilizzare l'operazione SendConfigurationValidityReport IPC per comunicare al software AWS IoT Greengrass Core se l'aggiornamento della configurazione è valido. Se l'aggiornamento della configurazione non è valido, la distribuzione non riesce.

      Questa policy è un oggetto con il seguente parametro:

      • timeoutInSeconds(Facoltativo) La quantità di tempo in secondi di cui ogni componente ha a disposizione per convalidare un aggiornamento della configurazione. Se il componente non risponde entro questo lasso di tempo, la distribuzione procede sul dispositivo principale.

        Il valore predefinito è 30 secondi.

    3. (Facoltativo) Specificare la politica di gestione degli errori (failureHandlingPolicy). Questa policy è una stringa che definisce se ripristinare o meno i dispositivi in caso di errore della distribuzione. Seleziona una delle opzioni seguenti:

      • ROLLBACK— Se la distribuzione non riesce su un dispositivo principale, il software AWS IoT Greengrass Core ripristina quel dispositivo principale alla configurazione precedente.

      • DO_NOTHING— Se la distribuzione non riesce su un dispositivo principale, il software AWS IoT Greengrass Core mantiene la nuova configurazione. Ciò può causare la rottura dei componenti se la nuova configurazione non è valida.

      L’impostazione predefinita è ROLLBACK.

      Importante

      Il software AWS IoT Greengrass principale ignora la politica di gestione degli errori per le distribuzioni bootstrap. Una distribuzione bootstrap aggiorna la versione Greengrass nucleus o include un componente con una fase del ciclo di vita del bootstrap. Se una distribuzione bootstrap fallisce, il software Core ripristina il dispositivo AWS IoT Greengrass principale alla configurazione precedente. Il rollback avviene anche se si imposta la politica di gestione degli errori su. DO_NOTHING Questo comportamento mantiene il dispositivo principale in uno stato funzionante dopo il riavvio.

    La distribuzione in deployment.json potrebbe essere simile all'esempio seguente:

    { "targetArn": "targetArn", "deploymentName": "deploymentName", "components": { "com.example.IndustrialDashboard": { "componentVersion": "1.0.0", "configurationUpdate": { "reset": [ "/network/useHttps", "/tags" ], "merge": "{\"tags\":[\"/boiler/1/temperature\",\"/boiler/1/pressure\",\"/boiler/2/temperature\",\"/boiler/2/pressure\"]}" } } }, "deploymentPolicies": { "componentUpdatePolicy": { "action": "NOTIFY_COMPONENTS", "timeoutInSeconds": 30 }, "configurationValidationPolicy": { "timeoutInSeconds": 60 }, "failureHandlingPolicy": "ROLLBACK" } }
  6. (Facoltativo) Definisci la modalità di interruzione, implementazione o timeout della distribuzione. AWS IoT Greengrass utilizza i AWS IoT Core processi per inviare le distribuzioni ai dispositivi principali, quindi queste opzioni sono identiche alle opzioni di configurazione per AWS IoT Core i processi. Per ulteriori informazioni, consulta Job rollout and abort configuration nella Developer Guide. AWS IoT

    Per definire le opzioni di lavoro, aggiungi un iotJobConfiguration oggetto a. deployment.json Quindi, definisci le opzioni da configurare.

    La tua distribuzione in deployment.json potrebbe essere simile all'esempio seguente:

    { "targetArn": "targetArn", "deploymentName": "deploymentName", "components": { "com.example.IndustrialDashboard": { "componentVersion": "1.0.0", "configurationUpdate": { "reset": [ "/network/useHttps", "/tags" ], "merge": "{\"tags\":[\"/boiler/1/temperature\",\"/boiler/1/pressure\",\"/boiler/2/temperature\",\"/boiler/2/pressure\"]}" } } }, "deploymentPolicies": { "componentUpdatePolicy": { "action": "NOTIFY_COMPONENTS", "timeoutInSeconds": 30 }, "configurationValidationPolicy": { "timeoutInSeconds": 60 }, "failureHandlingPolicy": "ROLLBACK" }, "iotJobConfiguration": { "abortConfig": { "criteriaList": [ { "action": "CANCEL", "failureType": "ALL", "minNumberOfExecutedThings": 100, "thresholdPercentage": 5 } ] }, "jobExecutionsRolloutConfig": { "exponentialRate": { "baseRatePerMinute": 5, "incrementFactor": 2, "rateIncreaseCriteria": { "numberOfNotifiedThings": 10, "numberOfSucceededThings": 5 } }, "maximumPerMinute": 50 }, "timeoutConfig": { "inProgressTimeoutInMinutes": 5 } } }
  7. (Facoltativo) Aggiungi tag (tags) per la distribuzione. Per ulteriori informazioni, consulta Tagga le tue AWS IoT Greengrass Version 2 risorse.

  8. Esegui il comando seguente per creare la distribuzione da. deployment.json

    aws greengrassv2 create-deployment --cli-input-json file://deployment.json

    La risposta include un messaggio deploymentId che identifica questa distribuzione. È possibile utilizzare l'ID di distribuzione per verificare lo stato della distribuzione. Per ulteriori informazioni, consulta Verifica lo stato della distribuzione.