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 il modo in cui il processo di distribuzione viene distribuito sui dispositivi di destinazione. È possibile definire la distribuzione nel file JSON fornito a. AWS CLI

L'obiettivo 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, specificate un gruppo di oggetti che includa tali dispositivi. Per ulteriori informazioni su come configurare i gruppi di oggetti, vedere Thing group statici e Thing group dinamici nella AWS IoT Developer Guide.

Segui i passaggi di questa sezione per creare una distribuzione su un target. Per ulteriori informazioni su come aggiornare i componenti software su una destinazione con una distribuzione, consultaRivedi le distribuzioni.

avvertimento

L'CreateDeploymentoperazione può disinstallare componenti dai dispositivi principali. Se un componente è presente nella distribuzione precedente e non in quella nuova, il dispositivo principale disinstalla quel componente. Per evitare la disinstallazione dei 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 ne crei una nuova.

Per creare una distribuzione (AWS CLI)
  1. Create un file chiamatodeployment.json, quindi copiate il seguente oggetto JSON nel file. Sostituisci targetArn con l'ARN dell' AWS IoT oggetto o del gruppo di oggetti da utilizzare come target per la distribuzione. L'oggetto e il gruppo di ARNs 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 modificare. Esegui questa operazione:

    1. Esegui il comando seguente per elencare le distribuzioni per l'obiettivo 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 la distribuzione più recente per l'obiettivo. Se la risposta è vuota, la destinazione non ha una distribuzione esistente e puoi saltare aPasso 3. Altrimenti, copia il deploymentId codice dalla risposta da utilizzare nel passaggio successivo.

      Nota

      Puoi anche modificare una distribuzione diversa dalla revisione più recente per la destinazione. Specificare l'--history-filter ALLargomento per elencare tutte le distribuzioni per l'obiettivo. 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 processo. 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 lavoro della 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 distribuire. 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 Core applica gli aggiornamenti di ripristino prima di applicare gli aggiornamenti di fusione. Per ulteriori informazioni, consulta Reimposta gli aggiornamenti.

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

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

      È possibile specificare una delle seguenti opzioni:

      • posixUser— L'utente e, facoltativamente, il gruppo del sistema POSIX 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 Core 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 principali. L'utente deve esistere su ogni dispositivo Windows principale e il nome e la password devono essere memorizzati 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 limiti di risorse di sistema a componenti Lambda generici e non containerizzati. Per ulteriori informazioni, consulta Configura i limiti delle risorse di sistema per i componenti.

        È possibile specificare una delle seguenti opzioni:

        • cpusLa 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, è possibile impostare questo valore in modo da 2 limitare i processi di questo componente al 50% di utilizzo di ciascun core della CPU. Su un dispositivo con 1 core di CPU, puoi impostare questo valore 0.25 per limitare i processi di questo componente al 25 percento di utilizzo della CPU. Se imposti questo valore su un numero maggiore del numero di core della CPU, il software AWS IoT Greengrass Core non limita l'utilizzo della CPU del componente.

        • memoryLa 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 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 di aggiornamento della configurazione con ripristino e unione degli aggiornamenti

    Consideriamo un esempio di componente di dashboard industriale con la seguente configurazione predefinita. com.example.IndustrialDashboard

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

    Il seguente aggiornamento della 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 etichette 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 la distribuzione di questo componente del dashboard industriale e l'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 quindi esegui una delle seguenti operazioni: deployment.json

    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 finché 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 la quantità di tempo a disposizione dei componenti per rispondere a una notifica di aggiornamento.

      Questa politica è un oggetto con i seguenti parametri:

      • action— (Facoltativo) Se notificare o meno i componenti e attendere che vengano segnalati 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.

      • timeoutInSecondsLa quantità di tempo in secondi a disposizione di ciascun componente 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 della 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 politica è un oggetto con il seguente parametro:

      • timeoutInSeconds(Facoltativo) La quantità di tempo in secondi a disposizione di ogni componente 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 se la distribuzione fallisce. Seleziona una delle opzioni seguenti:

      • ROLLBACK— Se l'installazione fallisce su un dispositivo principale, il software AWS IoT Greengrass Core ripristina il dispositivo principale alla configurazione precedente.

      • DO_NOTHING— Se l'installazione fallisce su un dispositivo principale, il software AWS IoT Greengrass Core mantiene la nuova configurazione. Ciò può causare il danneggiamento dei componenti se la nuova configurazione non è valida.

      L'impostazione predefinita è ROLLBACK.

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

    { "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 in che modo la distribuzione viene interrotta, implementata o scaduta. 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 lavori. Per ulteriori informazioni, consulta Job rollout and abort configuration nella AWS IoT Developer Guide.

    Per definire le opzioni di lavoro, aggiungi un iotJobConfiguration oggetto a. deployment.json Quindi, definite 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 dadeployment.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.