Preparazione dei lavori AWS IoT - AWS IoT Core

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

Preparazione dei lavori AWS IoT

AWS IoT Device Management Software Package Catalog estende AWS IoT Jobs tramite parametri di sostituzione e integrazione con l'indicizzazione AWS IoT della flotta, i gruppi di oggetti dinamici e il nome shadow riservato dell' AWS IoT oggetto.

Nota

Per utilizzare tutte le funzionalità offerte da Software Package Catalog, è necessario creare questi AWS Identity and Access Management (IAM) ruoli e politiche: AWS IoT Jobs rights per distribuire le versioni del pacchetto e AWS IoT Jobs rights per aggiornare la named shadow riservata. Per ulteriori informazioni, consulta Preparazione della sicurezza.

Parametri di sostituzione per i lavori AWS IoT

È possibile utilizzare i parametri di sostituzione come segnaposto all'interno del documento di lavoro. AWS IoT Quando il servizio del processo rileva un parametro di sostituzione, indirizza il processo a un attributo della versione software con nome per il valore del parametro. Puoi utilizzare questo processo per creare un singolo documento del processo e passare i metadati al processo tramite attributi di uso generico. Ad esempio, puoi inserire un Amazon Simple Storage Service (Amazon S3)URL, un pacchetto software Amazon Resource Name (ARN) o una firma nel documento di lavoro tramite gli attributi della versione del pacchetto.

I parametri di sostituzione devono essere formattati nel documento di lavoro come segue:

  • Nome e versione del pacchetto software

    • La stringa vuota intermedia package::version rappresenta il parametro di sostituzione del nome del pacchetto software. La stringa vuota tra i due version::attribute rappresenta il parametro di sostituzione della versione del pacchetto software. Fate riferimento al seguente esempio per utilizzare i parametri di sostituzione del nome del pacchetto e della versione del pacchetto in un documento di lavoro:. ${aws:iot:package::version::attributes:<attributekey>}

    • Il documento di lavoro compilerà automaticamente questi parametri di sostituzione utilizzando la versione dei dettagli della versione del pacchetto. ARN Se stai creando un processo o un modello di processo per una distribuzione a pacchetto singolo utilizzando un CLI comando API or, la versione ARN per una versione del pacchetto è rappresentata dal parametro in and. destinationPackageVersions CreateJob DescribeJob

  • Tutti gli attributi di una versione del pacchetto software

    • Fate riferimento al seguente esempio per utilizzare tutti gli attributi di un parametro di sostituzione della versione di un pacchetto software in un documento di lavoro: ${aws:iot:package:<packageName>:version:<versionName>:attributes}

Nota

Il nome del pacchetto, la versione del pacchetto e i parametri di sostituzione di tutti gli attributi possono essere utilizzati insieme. Fate riferimento al seguente esempio per utilizzare tutti e tre i parametri di sostituzione in un documento di lavoro: ${aws:iot:package::version::attributes}

Nell'esempio seguente, esiste un pacchetto software denominato samplePackage e ha una versione del pacchetto denominata 2.1.5 con i seguenti attributi:

  • nome: s3URL, valore: https://EXAMPIEBUCKET.s3.us-west-2.amazonaws.com/exampleCodeFile

    • Questo attributo identifica la posizione del file di codice archiviato in Amazon S3.

  • nome: signature, valore: aaaaabbbbbcccccdddddeeeeefffffggggghhhhhiiiiijjjj

    • Questo attributo fornisce un valore di firma del codice richiesto dal dispositivo come misura di sicurezza. Per ulteriori informazioni, consulta Firma del codice per i processi. Nota: questo attributo è un esempio e non è richiesto come parte del Software Package Catalog o dei processi.

Per s3URL, il parametro del documento del processo è scritto come segue:

{ "samplePackage": "${aws:iot:package:samplePackage1:version:2.1.5:attributes:s3URL}" }

Per signature, il parametro del documento del processo è scritto come segue:

{ "samplePackage": "${aws:iot:package:samplePackage1:version:2.1.5:attributes:signature}" }

Il documento del processo completo è scritto come segue:

{ ... "Steps": { "uninstall": ["samplePackage"], "download": [ { "samplePackage": "${aws:iot:package:samplePackage1:version:2.1.5:attributes:s3URL}" }, ], "signature": [ "samplePackage" : "${aws:iot:package:samplePackage1:version:2.1.5:attributes:signature}" ] } }

Dopo aver effettuato la sostituzione, nei dispositivi viene distribuito il seguente documento del processo:

{ ... "Steps": { "uninstall": ["samplePackage"], "download": [ { "samplePackage": "https://EXAMPIEBUCKET.s3.us-west-2.amazonaws.com/exampleCodeFile" }, ], "signature": [ "samplePackage" : "aaaaabbbbbcccccdddddeeeeefffffggggghhhhhiiiiijjjj" ] } }

Parametri di sostituzione (visualizzazione prima e dopo)

I parametri di sostituzione semplificano la creazione di un documento di lavoro utilizzando vari flag, ad esempio per la versione predefinita del pacchetto. $default Ciò elimina la necessità di inserire manualmente i metadati della versione specifica del pacchetto per ogni distribuzione del processo, poiché tali flag vengono riempiti automaticamente con i metadati di riferimento nella versione specifica del pacchetto. Per ulteriori informazioni sugli attributi della versione del pacchetto, ad esempio $default per la versione predefinita del pacchetto, vedere. Preparazione del documento del processo e della versione del pacchetto per l'implementazione

In AWS Management Console, attiva il pulsante Anteprima della sostituzione nella finestra dell'editor del file di istruzioni di distribuzione durante la distribuzione di un lavoro per una versione del pacchetto per visualizzare il documento del lavoro con e senza i parametri di sostituzione.

Utilizzando il parametro «before-substitution» in e GetJobDocumentAPIs, è possibile visualizzare la risposta prima DescribeJob e dopo la rimozione dei parametri di sostituzione. API Fate riferimento ai seguenti esempi con e: DescribeJob GetJobDocument APIs

  • DescribeJob

    • Visualizzazione predefinita

      { "jobId": "<jobId>", "description": "<description>", "destinationPackageVersions": ["arn:aws:iot:us-west-2:123456789012:package/TestPackage/version/1.0.2"] }
    • Prima della visualizzazione sostitutiva

      { "jobId": "<jobId>", "description": "<description>", "destinationPackageVersions": ["arn:aws:iot:us-west-2:123456789012:package/TestPackage/version/$default"] }
  • GetJobDocument

    • Visualizzazione predefinita

      { "attributes": { "location": "prod-artifacts.s3.us-east-1.amazonaws.com/mqtt-core", "signature": "IQoJb3JpZ2luX2VjEIrwEaCXVzLWVhc3QtMSJHMEUCIAofPNPpZ9cI", "streamName": "mqtt-core", "fileId": "0" }, }
    • Prima della visualizzazione sostitutiva

      { "attributes": "${aws:iot:package:TestPackage:version:$default:attributes}", }

Per ulteriori informazioni sui AWS IoT lavori, sulla creazione di documenti di lavoro e sulla distribuzione dei lavori, consulta Jobs.

Preparazione del documento del processo e della versione del pacchetto per l'implementazione

Quando viene creata una versione del pacchetto, è in uno draft stato tale da indicare che è in fase di preparazione per la distribuzione. Per preparare la versione del pacchetto per la distribuzione, è necessario creare un documento di lavoro, salvare il documento in una posizione accessibile al processo (ad esempio Amazon S3) e confermare che la versione del pacchetto abbia i valori degli attributi che si desidera utilizzare nel documento di lavoro. (Nota: puoi aggiornare gli attributi per una versione del pacchetto solo mentre è nello draft stato.)

Quando si crea un AWS IoT Job o un modello di Job per una distribuzione a pacchetto singolo, sono disponibili le seguenti opzioni per personalizzare il documento di lavoro:

File di istruzioni di distribuzione () recipe

  • Il file di istruzioni di distribuzione per una versione del pacchetto contiene le istruzioni di distribuzione, incluso un documento di lavoro in linea, per la distribuzione di una versione del pacchetto su più dispositivi. Il file associa istruzioni di distribuzione specifiche a una versione del pacchetto per una distribuzione del lavoro rapida ed efficiente.

    In AWS Management Console, è possibile creare il file nella finestra di anteprima del file delle istruzioni di distribuzione nella scheda Configurazioni di distribuzione delle versioni del flusso di lavoro per la creazione di un nuovo pacchetto. Puoi sfruttarlo AWS IoT per generare automaticamente un file di istruzioni dagli attributi della versione del pacchetto utilizzando Start from AWS IoT recommended file o utilizzare il documento di lavoro esistente archiviato in un bucket Amazon S3 utilizzando Usa il tuo file di istruzioni di distribuzione.

    Nota

    Se utilizzi il tuo documento di lavoro, puoi aggiornarlo direttamente nella finestra di anteprima del file delle istruzioni di distribuzione, ma non aggiornerà automaticamente il documento di lavoro originale archiviato nel tuo bucket Amazon S3.

    Quando si utilizza AWS CLI o un API comando comeCreatePackageVersion, or GetPackageVersionUpdatePackageVersion, recipe rappresenta il file di istruzioni di distribuzione, che include un documento di lavoro in linea.

    Per ulteriori informazioni su cos'è un documento di lavoro, vedereConcetti di base.

    Fate riferimento al seguente esempio per il file di istruzioni di distribuzione rappresentato darecipe:

    { "packageName": "sample-package-name", "versionName": "sample-package-version", ... "recipe": "{...}" }
    Nota

    Il file di istruzioni di distribuzione rappresentato da recipe può essere aggiornato quando la versione di un pacchetto si trova nello published stato in cui è separato dai metadati della versione del pacchetto. Diventa immutabile durante l'implementazione del lavoro.

Artifactattributo di versione

  • Utilizzando l'attributo version artifact nella versione del pacchetto software, puoi aggiungere la posizione Amazon S3 per gli artefatti della versione del pacchetto. Quando viene attivata una distribuzione di lavoro per la versione del pacchetto utilizzando AWS IoT Jobs, il URL segnaposto predefinito ${aws:iot:package:<packageName>:version:<versionName>:artifact-location:s3-presigned-url} nel documento del processo verrà aggiornato utilizzando il bucket Amazon S3, la chiave del bucket e la versione del file archiviato nel bucket Amazon S3. Il bucket Amazon S3 che memorizza gli elementi della versione del pacchetto deve trovarsi nella stessa regione in cui è stata creata la versione del pacchetto.

    Nota

    Per archiviare più versioni di oggetti dello stesso file nel tuo bucket Amazon S3, devi abilitare il controllo delle versioni sul bucket. Per ulteriori informazioni, consulta Abilitare il controllo delle versioni sui bucket.

    Per accedere agli elementi della versione del pacchetto nel bucket Amazon S3 quando si utilizza CreatePackageVersion l'operazione UpdatePackageVersion API o, è necessario disporre delle seguenti autorizzazioni:

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "s3:GetObjectVersion", "Resource": "arn:<partition>:s3:::<bucket>/<key>" } ] }

    Per ulteriori informazioni sull'attributo version artifact nelle operazioni and, consulta CreatePackageVersion e UpdatePackageVersionAPI. CreatePackageVersionUpdatePackageVersion

    Fai riferimento al seguente esempio che mostra l'attributo version che artifact supporta la posizione dell'artefatto in Amazon S3 durante la creazione di una nuova versione del pacchetto:

    { "packageName": "sample package name", "versionName": "1.0", "artifact": { "s3Location": { "bucket": "firmware", "key": "image.bin", "version": "12345" } } }
    Nota

    Quando una versione del pacchetto viene aggiornata da uno stato di draft status a uno stato di published status, gli attributi della versione del pacchetto e la posizione dell'artificat diventano immutabili. Per aggiornare queste informazioni, è necessario creare una nuova versione del pacchetto ed eseguire tali aggiornamenti mentre si trova nello stato. draft

Versione del pacchetto

  • Una versione del pacchetto software predefinita può essere indicata nelle versioni disponibili del pacchetto software che forniscono una versione del pacchetto sicura e stabile. Questa serve come versione di base del pacchetto software quando si distribuisce la versione del pacchetto predefinita nel parco dispositivi utilizzando Jobs. AWS IoT Quando si crea un lavoro per distribuire la versione del $default pacchetto per un pacchetto software, la versione del pacchetto nel documento del lavoro e nella nuova distribuzione del lavoro deve corrispondere a. $default La versione del pacchetto nella distribuzione del processo è rappresentata da destinationPackageVersions for API and CLI commands e VersionARN in. AWS Management Console La versione del pacchetto nel documento di lavoro è rappresentata dal seguente segnaposto del documento di lavoro mostrato di seguito:

    arn:aws:iot:<regionCode>:111122223333:package/<packageName>/version/$default

    Per creare un lavoro o un modello di lavoro utilizzando la versione del pacchetto predefinita, utilizzate il $default flag nel CreateJobTemplate API comando CreateJob or come illustrato di seguito:

    "$ aws iot create-job \ --destination-package-versions "arn:aws:iot:us-west-2:123456789012:package/TestPackage/version/$default" --document file://jobdoc.json
    Nota

    L'attributo della versione del $default pacchetto che fa riferimento alla versione predefinita è un attributo facoltativo richiesto solo quando si fa riferimento alla versione predefinita del pacchetto per una distribuzione di lavoro tramite AWS IoT Jobs.

Quando sei soddisfatto della versione del pacchetto, pubblicala tramite la pagina dei dettagli del pacchetto software nella AWS IoT console o eseguendo l'operazione. UpdatePackageVersionAPI È quindi possibile fare riferimento alla versione del pacchetto quando si crea il processo tramite la AWS IoT console o eseguendo l'CreateJobAPIoperazione.

Assegnazione di un nome ai pacchetti e alle versioni durante la distribuzione

Per distribuire la versione di un pacchetto software su un dispositivo, verificate che il pacchetto software e la versione del pacchetto a cui si fa riferimento nel documento di lavoro corrispondano al pacchetto software e alla versione del pacchetto indicati nel destinationPackageVersions parametro dell'operazione. CreateJob API Se non corrispondono, riceverai un messaggio di errore che ti chiederà di far corrispondere entrambi i riferimenti. Per ulteriori informazioni sui messaggi di errore del Software Package Catalog, vedereMessaggi di errore generali sulla risoluzione dei problemi.

Oltre ai pacchetti software e alle versioni dei pacchetti a cui si fa riferimento nel documento di lavoro, è possibile includere pacchetti software e versioni di pacchetto aggiuntivi nel destinationPackageVersions parametro dell'CreateJobAPIoperazione non referenziata nel documento del lavoro. Assicuratevi che nel documento di lavoro siano incluse le informazioni di installazione necessarie affinché i dispositivi installino correttamente le versioni dei pacchetti software aggiuntivi. Per ulteriori informazioni sull'CreateJob APIoperazione, vedere CreateJob.

Indirizzazione dei lavori tramite gruppi di AWS IoT oggetti dinamici

Software Package Catalog funziona con l'indicizzazione del parco istanze, i processi di AWS IoT e i gruppi di oggetti dinamici AWS IoT per filtrare e definire i dispositivi all'interno del parco istanze per selezionare la versione del pacchetto da distribuire nei dispositivi. Puoi eseguire una query di indicizzazione del parco veicoli in base alle informazioni sulla confezione corrente del tuo dispositivo e indirizzare tali elementi per un determinato lavoro. AWS IoT Puoi anche rilasciare aggiornamenti software, ma solo per i dispositivi di destinazione idonei. Ad esempio, puoi specificare che desideri distribuire una configurazione solo sui dispositivi che attualmente eseguono iot-device-client 1.5.09. Per ulteriori informazioni, consulta Creazione di un gruppo di oggetti dinamico.

Copia shadow con nome riservata e versioni dei pacchetti

Se configurato, AWS IoT Jobs può aggiornare il nome riservato di un oggetto denominato shadow ($package) quando il processo viene completato correttamente. In tal caso, non occorre associare manualmente una versione del pacchetto alla copia shadow con nome riservata di un oggetto.

Puoi scegliere di associare o aggiornare manualmente una versione del pacchetto alla copia shadow con nome riservata dell'oggetto nelle seguenti situazioni:

  • Si registra un oggetto AWS IoT Core senza associare la versione del pacchetto installato.

  • AWS IoT Jobs non è configurato per aggiornare il nome shadow riservato dell'oggetto.

  • Utilizzi un processo interno per inviare le versioni dei pacchetti alla tua flotta e tale processo non AWS IoT Core si aggiorna una volta completato.

Nota

Ti consigliamo di utilizzare AWS IoT Jobs per aggiornare la versione del pacchetto nella cartella riservata denominata shadow (). $package L'aggiornamento del parametro version nello $package shadow tramite altri processi (ad esempio API chiamate manuali o programmatiche) quando anche AWS IoT Jobs è configurato per aggiornare lo shadow, può causare incongruenze tra la versione effettiva sul dispositivo e la versione riportata allo shadow denominato riservato.

È possibile aggiungere o aggiornare una versione del pacchetto alla proprietà riservata denominata shadow ($package) di un oggetto tramite la console o l'operazione. UpdateThingShadowAPI Per ulteriori informazioni, vedete Associare una versione del pacchetto a un AWS IoT oggetto.

Nota

L'associazione di una versione del pacchetto a un AWS IoT elemento non aggiorna direttamente il software del dispositivo. Devi distribuire la versione del pacchetto al dispositivo per aggiornare il software del dispositivo.

Disinstallazione di un pacchetto software e della relativa versione del pacchetto

$nullè un segnaposto riservato che richiede al servizio AWS IoT Jobs di rimuovere il pacchetto software e la versione del pacchetto esistenti dall'ombra denominata riservata del dispositivo. $package Per ulteriori informazioni, consulta Copia shadow con nome riservata.

Per utilizzare questa funzionalità, sostituisci il nome della versione alla fine di destinationPackageVersionAmazon Resource Name (ARN) con$null. Successivamente, devi indicare al tuo servizio di rimuovere il software dal dispositivo.

L'autorizzato ARN utilizza il seguente formato:

arn:aws:iot:<regionCode>:111122223333:package/<packageName>/version/$null

Ad esempio,

$ aws iot create-job \ ... \ --destinationPackageVersions ["arn:aws:iot:us-east-1:111122223333:package/samplePackage/version/$null"]