View a markdown version of this page

Preparing (Preparazione) AWS IoT Jobs - 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à.

Preparing (Preparazione) AWS IoT Jobs

AWS IoT Device Management Software Package Catalog estende i AWS IoT processi tramite parametri di sostituzione e integrazione con l'indicizzazione del AWS IoT parco macchine, i gruppi di oggetti dinamici e la soluzione riservata denominata AWS IoT shadow.

Nota

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

Parametri di sostituzione per AWS IoT jobs

È 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, potrebbe essere necessario passare un URL di Amazon Simple Storage Service (Amazon S3), un nome della risorsa Amazon (ARN) del pacchetto software o una firma nel documento del processo 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 between package::version rappresenta il parametro di sostituzione del nome del pacchetto software. La stringa vuota tra version::attribute rappresenta il parametro di sostituzione della versione del pacchetto software. Fate riferimento al seguente esempio per l'utilizzo del nome del pacchetto e dei parametri di sostituzione 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 ARN contenuta nei dettagli della versione del pacchetto. Se state creando un job o un modello di job per una distribuzione a pacchetto singolo utilizzando un comando API o CLI, l'ARN della versione per una versione del pacchetto è rappresentato dal parametro in and. destinationPackageVersions CreateJob DescribeJob

  • Tutti gli attributi per una versione del pacchetto software

    • Fate riferimento al seguente esempio per l'utilizzo di 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 tutti i parametri di sostituzione degli attributi possono essere usati insieme. Fate riferimento al seguente esempio per l'utilizzo di tutti e tre i parametri di sostituzione in un documento di lavoro: ${aws:iot:package::version::attributes}

Nell'esempio seguente, è presente 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 lavoro poiché tali flag vengono compilati automaticamente con i metadati di riferimento nella versione specifica del pacchetto. Per ulteriori informazioni sugli attributi della versione del pacchetto, ad esempio per la versione predefinita del pacchetto, vedere. $default Preparazione del documento del processo e della versione del pacchetto per la distribuzione

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

Utilizzando il parametro «before-substitution» nelle API and, puoi visualizzare la risposta dell'GetJobDocumentAPI prima DescribeJob e dopo la rimozione dei parametri di sostituzione. Fai riferimento ai seguenti esempi con le API and: DescribeJob GetJobDocument

  • DescribeJob

    • Visualizzazione predefinita

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

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

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

Per ulteriori informazioni su AWS IoT Jobs, sulla creazione di documenti relativi ai job e sulla distribuzione dei job, consulta Jobs. https://docs.aws.amazon.com/iot/latest/developerguide/iot-jobs.html

Preparazione del documento del processo e della versione del pacchetto per la distribuzione

Quando viene creata una versione del pacchetto, questa è in uno draft stato tale da indicare che è in fase di preparazione per la distribuzione. Per preparare la versione del pacchetto per la distribuzione, devi creare un documento di lavoro, salvarlo in una posizione accessibile al processo (come Amazon S3) e confermare che la versione del pacchetto contenga i valori degli attributi che desideri vengano utilizzati dal documento di lavoro. (Nota: puoi aggiornare gli attributi per una versione del pacchetto solo mentre è nello draft stato.)

Quando crei un AWS IoT Job o un modello Job per una distribuzione a pacchetto singolo, hai le seguenti opzioni per personalizzare il tuo 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 rapida ed efficiente dei processi.

    In Console di gestione AWS, è possibile creare il file nella finestra di anteprima del file delle istruzioni di distribuzione nella scheda Configurazioni di distribuzione della versione del flusso di lavoro di creazione di un nuovo pacchetto. Puoi sfruttare la possibilità di AWS IoT 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 il file di istruzioni di distribuzione Use your own deployment.

    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 bucket Amazon S3.

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

    Per ulteriori informazioni su cosa sia un documento di lavoro, vedere. Concetti 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 una versione del pacchetto è nello published stato in cui è separata dai metadati della versione del pacchetto. Diventa immutabile durante la distribuzione del lavoro.

Artifactattributo version

  • Utilizzando l'attributo version artifact nella versione del pacchetto software, puoi aggiungere la posizione Amazon S3 per gli artefatti della versione del pacchetto. Quando una distribuzione del processo per la versione del pacchetto viene attivata utilizzando AWS IoT Jobs, il segnaposto URL prefirmato ${aws:iot:package:<packageName>:version:<versionName>:artifact-location:s3-presigned-url} nel documento di lavoro 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 archivia gli artefatti 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 bucket Amazon S3, devi abilitare il controllo delle versioni nel bucket. Per ulteriori informazioni, consulta Abilitare il controllo delle versioni sui bucket.

    Per accedere agli artefatti della versione del pacchetto nel bucket Amazon S3 quando usi l'operazione CreatePackageVersion or UpdatePackageVersion API, devi disporre delle seguenti autorizzazioni:

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

    Per ulteriori informazioni sull'attributo version artifact nelle operazioni CreatePackageVersion e UpdatePackageVersion API, consulta e. CreatePackageVersion UpdatePackageVersion

    Fai riferimento al seguente esempio che mostra l'attributo version che artifact supporta la posizione degli artefatti 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 la versione di un pacchetto si aggiorna da uno draft stato di stato a uno stato di published stato, 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 è nello stato di stato. draft

Versione del pacchetto

  • Una versione predefinita del pacchetto software può essere indicata nelle versioni disponibili del pacchetto software che forniscono una versione sicura e stabile del pacchetto. Questa funge da versione di base del pacchetto software quando si distribuisce la versione predefinita del pacchetto nel parco dispositivi tramite Jobs. AWS IoT Quando si crea un job per distribuire la versione del $default pacchetto per un pacchetto software, la versione del pacchetto nel documento di lavoro e nella nuova distribuzione del job deve corrispondere a as. $default La versione del pacchetto nella distribuzione del processo è rappresentata dai comandi destinationPackageVersions for API e CLI e da. VersionARN Console di gestione AWS 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 predefinita del pacchetto, usa il $default flag nel comando CreateJob or CreateJobTemplate API come mostrato 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 opzionale richiesto solo quando si fa riferimento alla versione predefinita del pacchetto per una distribuzione di lavoro tramite Jobs. AWS IoT

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

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

Per distribuire una versione del 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 nell'CreateJoboperazione 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 per la 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 del pacchetto aggiuntivi nel destinationPackageVersions parametro dell'operazione CreateJob API a cui non si fa riferimento nel documento di lavoro. Assicuratevi che nel documento di lavoro siano incluse le informazioni di installazione necessarie affinché i dispositivi installino correttamente le versioni aggiuntive del pacchetto software. Per ulteriori informazioni sul funzionamento dell'CreateJob API, vedere CreateJob.

Indirizzare i lavori tramite AWS IoT gruppi di 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 correnti sul pacchetto del tuo dispositivo e destinare tali elementi a un 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 un oggetto riservato denominato shadow ($package) quando il lavoro viene completato con successo. 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 l'oggetto riservato denominato shadow.

  • 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 nel file riservato denominato shadow (). $package L'aggiornamento del parametro version in the $package shadow tramite altri processi (ad esempio chiamate API manuali o programmatiche) quando AWS IoT Jobs è configurato anche per aggiornare lo shadow, può causare incoerenze tra la versione effettiva sul dispositivo e la versione riportata all'oggetto riservato denominato shadow.

Puoi aggiungere o aggiornare una versione del pacchetto a una copia con nome riservata dell'oggetto ($package) tramite la console o l'operazione API UpdateThingShadow. Per ulteriori informazioni, consulta Associare una versione del pacchetto a un oggetto. AWS IoT

Nota

L'associazione di una versione del pacchetto a un AWS IoT oggetto 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

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

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

L'ARN autorizzato 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"]