View a markdown version of this page

Gestione dei processi - 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à.

Gestione dei processi

Utilizza i processi per inviare notifica ai dispositivi riguardo un aggiornamento del software o del firmware. È possibile utilizzare la console AWS IoT, l'Operazioni API di gestione e controllo dei processi, la AWS Command Line Interface o gli SDK AWS per creare e gestire i processi.

Firma del codice per i processi

Quando si invia un codice ai dispositivi affinché questi rilevino se il codice è stato modificato durante il transito, si consiglia di firmare il file di codice utilizzando la AWS CLI. Per istruzioni, consulta Creazione e gestione di processi utilizzando la AWS CLI.

Per ulteriori informazioni, vedi A cosa serve la firma del codice AWS IoT? .

Documento di processo

Prima di creare un processo, è necessario creare un documento del processo. Se utilizzi la firma del codice per AWS IoT, devi caricare il documento di lavoro in un bucket Amazon S3 con versione. Per informazioni sulla creazione e il caricamento di un file in un bucket Amazon S3, consulta la sezione Nozioni di base su Amazon Simple Storage Service nella Guida alle nozioni di base su Amazon S3.

Suggerimento

Per esempi di documenti di lavoro, consulta l'esempio jobs-agent.js nell'SDK per AWS IoT . JavaScript

URL prefirmati

Il documento di processo può contenere un URL Amazon s3 prefirmato che punta al file del codice (o ad altri file). Gli URL Amazon S3 prefirmati sono validi per un periodo di tempo limitato e vengono generati fino a quando un dispositivo richiede un documento di processo. Poiché l'URL prefirmato non è stato creato durate la creazione del documento di processo, è necessario inserire un URL segnaposto nel documento di processo. Un URL segnaposto ha il seguente aspetto:

${aws:iot:s3-presigned-url-v2:https://s3.region.amazonaws.com/<bucket>/<code file>}

dove:

  • bucketè il bucket Amazon S3 che contiene il file di codice.

  • code fileè la chiave Amazon S3 del file di codice.

Quando un dispositivo richiede il documento di lavoro, AWS IoT genera l'URL prefirmato e sostituisce l'URL segnaposto con l'URL prefirmato. Il documento di processo viene quindi inviato al dispositivo.

Ruolo IAM per concedere l'autorizzazione a scaricare file da S3

Quando crei un processo che utilizza gli URL Amazon S3 prefirmati, devi fornire un ruolo IAM. Il ruolo deve concedere l'autorizzazione per scaricare file dal bucket Amazon S3 in cui vengono archiviati i dati o gli aggiornamenti del processo. Il ruolo deve anche concedere ad AWS IoT l'autorizzazione per assumere il ruolo.

È possibile specificare un timeout opzionale per l'URL prefirmato. Per ulteriori informazioni, consulta CreateJob.

Grant AWS IoT Autorizzazione di Jobs ad assumere il tuo ruolo
  1. Vai a Hub dei ruoli della console IAM e scegli il ruolo.

  2. Nella scheda Relazioni di trust, seleziona Modifica relazione di trust e sostituisci il documento della policy con il JSON seguente. Scegli Update Trust Policy (Aggiorna policy di trust).

    { "Version":"2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": [ "iot.amazonaws.com" ] }, "Action": "sts:AssumeRole" } ] }
  3. Per prevenire il problema "confused deputy", aggiungi le chiavi di contesto di condizione globali aws:SourceArn e aws:SourceAccount alla policy.

    Importante

    aws:SourceArn deve essere conforme al formato: arn:aws:iot:region:account-id:*. Assicurati che region corrisponda alla tua AWS IoT regione e account-id all'ID del tuo account cliente. Per ulteriori informazioni, consulta Prevenzione della Cross-service confusione tra agenti sostitutivi.

    { "Effect": "Allow", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "iot.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "aws:SourceAccount": "123456789012" }, "ArnLike": { "aws:SourceArn": "arn:aws:iot:*:123456789012:job/*" } } } ] }
  4. Se il processo utilizza un documento del processo che è un oggetto Amazon S3, seleziona Permissions (Autorizzazioni) e utilizza il JSON seguente. In questo modo viene aggiunta una policy che concede l'autorizzazione per scaricare file dal bucket Amazon S3:

    { "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "s3:GetObject", "Resource": "arn:aws:s3:::your_S3_bucket/*" } ] }

URL prefirmato per il caricamento dei file

Se i tuoi dispositivi devono caricare file in un bucket Amazon S3 durante l'implementazione di un lavoro, puoi includere il seguente segnaposto URL prefirmato nel documento di lavoro:

${aws:iot:s3-presigned-url-upload:https://s3.region.amazonaws.com/<bucket>/<key>}

Puoi utilizzare un massimo di due parole chiave riservate per ciascuna di esse all'interno dell'${thingName}keyattributo contenuto nell'${executionNumber}URL segnaposto per il caricamento del file che si trova nel documento di lavoro. ${jobId} Il segnaposto locale che rappresenta le parole chiave riservate nell'keyattributo verrà analizzato e sostituito quando viene creata l'esecuzione del lavoro. L'utilizzo di un segnaposto locale con parole chiave riservate specifiche per ciascun dispositivo garantisce che ogni file caricato da un dispositivo sia specifico per quel dispositivo e non sia sovrascritto da un file simile caricato da un altro dispositivo oggetto della stessa distribuzione del lavoro. Per informazioni sulla risoluzione dei problemi relativi ai segnaposti locali all'interno di un segnaposto URL prefirmato per il caricamento di file durante una distribuzione di lavoro, consulta. Messaggi di errore generali per la risoluzione dei problemi

Nota

Il nome del bucket Amazon S3 non può contenere il segnaposto locale che rappresenta le parole chiave riservate per il file caricato. Il segnaposto locale deve trovarsi nell'attributo. key

Questo segnaposto URL prefirmato verrà convertito in un URL di caricamento prefirmato di Amazon S3 nel documento di lavoro quando un dispositivo lo riceve. I tuoi dispositivi lo utilizzeranno per caricare file in un bucket Amazon S3 di destinazione.

Nota

Se il bucket e la chiave Amazon S3 non sono forniti nell'URL segnaposto sopra riportato, AWS IoT Jobs genererà automaticamente una chiave per ciascun dispositivo utilizzando un massimo di due per, e. ${thingName} ${jobId} ${executionNumber}

URL prefirmato utilizzando il controllo delle versioni di Amazon S3

Salvaguardare l'integrità di un file archiviato in un bucket Amazon S3 è fondamentale per garantire distribuzioni sicure dei lavori che utilizzano quel file nel parco dispositivi. Con l'uso del controllo delle versioni di Amazon S3, puoi aggiungere un identificatore di versione per ogni variante del file archiviata nel tuo bucket Amazon S3 per tracciare ogni versione del file. Ciò fornisce informazioni sulla versione del file distribuita al tuo parco dispositivi tramite Jobs. AWS IoT Per ulteriori informazioni sui bucket Amazon S3 che utilizzano il controllo delle versioni, consulta Utilizzo del controllo delle versioni nei bucket Amazon S3.

Se il file è archiviato in Amazon S3 e il documento di lavoro contiene un segnaposto URL prefirmato, AWS IoT Jobs genererà un URL prefirmato nel documento di lavoro utilizzando il bucket Amazon S3, la chiave bucket e la versione del file archiviato nel bucket Amazon S3. Questo URL prefirmato generato nel documento di lavoro sostituirà il segnaposto URL prefirmato originariamente nel documento di lavoro. Se aggiorni il file archiviato nel bucket Amazon S3, versionId verrà creata una nuova versione del file e successive per segnalare gli aggiornamenti apportati e fornire la possibilità di indirizzare quel file specifico nelle future distribuzioni di lavoro.

Fai riferimento ai seguenti esempi per visualizzare prima e durante gli URL prefirmati di Amazon S3 nel tuo documento di lavoro utilizzando: versionId

Segnaposto URL prefirmato Amazon S3 (prima della distribuzione del lavoro)

//Virtual-hosted style URL ${aws:iot:s3-presigned-url-v2:https://bucket-name.s3.region-code.amazonaws.com/key-name%3FversionId%3Dversion-id} //Path-style URL ${aws:iot:s3-presigned-url-v2:https://s3.region-code.amazonaws.com/bucket-name/key-name%3FversionId%3Dversion-id}

URL prefirmato di Amazon S3 (durante la distribuzione del lavoro)

//Virtual-hosted style URL ${aws:iot:s3-presigned-url-v2:https://sample-bucket-name.s3.us-west-2.amazonaws.com/sample-code-file.png%3FversionId%3Dversion1} //Path-style ${aws:iot:s3-presigned-url-v2:https://s3.us-west-2.amazonaws.com/sample-bucket-name/sample-code-file.png%3FversionId%3Dversion1}

Per ulteriori informazioni sugli URL degli oggetti ospitati virtualmente e in stile path di Amazon S3, consulta request and requests. Virtual-hosted-style Path-style

Nota

Se desideri aggiungere un URL prefirmato di Amazon S3, questo deve essere conforme versionId al supporto della codifica URL. AWS SDK for Java 2.x Per ulteriori informazioni, consulta Modifiche nell'analisi degli URI di Amazon S3 dalla versione 1 alla versione 2.

Differenze tra le versioni dei segnaposto URL prefirmati di Amazon S3

L'elenco seguente illustra le differenze tra i segnaposto URL predefiniti di Amazon S3 (versione 1) e ${aws:iot:s3-presigned-url-v1 (versione 2): ${aws:iot:s3-presigned-url-v2

  • Il segnaposto URL prefirmato Amazon S3 non supporta. ${aws:iot:s3-presigned-url-v1 version-id

  • Il segnaposto URL prefirmato Amazon S3 riceve l'URL Amazon S3 come non codificato. ${aws:iot:s3-presigned-url-v1 Il segnaposto Amazon S3 Presigned URL ${aws:iot:s3-presigned-url-v2 richiede che l'URL Amazon S3 sia codificato in modo conforme allo standard Amazon S3 SDK.