

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

# Che cos'è Jobs AWS IoT ?
<a name="jobs-what-is"></a>

Utilizza AWS IoT Jobs per definire una serie di operazioni remote che possono essere inviate ed eseguite su uno o più dispositivi a cui è possibile connettersi AWS IoT. 

Per creare i processi, definisci innanzitutto un *documento di processo* che contiene un elenco di istruzioni che descrivono le operazioni che il dispositivo deve eseguire in remoto. Per eseguire queste operazioni, specificare un elenco di *obiettivi*, che sono oggetti individuali, [gruppi di oggetti](thing-groups.md), o entrambi. Il documento di processo e gli obiettivi costituiscono un'*implementazione*.

Ciascuna implementazione può avere configurazioni aggiuntive:
+ **Rollout**: Questa configurazione definisce il numero di dispositivi che ricevono il documento di processo ogni minuto.
+ **Abort** (interruzione): se un certo numero di dispositivi non riceve la notifica di processo, utilizza questa configurazione per annullare il processo. In questo modo, eviti l’invio di un aggiornamento errato a un intero parco istanze.
+ **Timeout**: se entro una certa durata gli obiettivi di processo non ricevono una risposta, il processo potrebbe non riuscire. Puoi tenere traccia del processo in esecuzione in questi dispositivi.
+ **Riprova**: se un dispositivo segnala un guasto o un processo scade, puoi utilizzare AWS IoT Jobs per inviare nuovamente il documento di lavoro al dispositivo automaticamente.
+ **Scheduling** (Pianificazione): questa configurazione consente di pianificare un processo per una data e un'ora future. Consente inoltre di creare finestre di manutenzione ricorrenti che aggiornano i dispositivi durante periodi predefiniti con traffico ridotto.

AWS IoT Jobs invia un messaggio per informare gli obiettivi che un lavoro è disponibile. L'obiettivo avvia l'*esecuzione* del lavoro scaricando il documento del lavoro, eseguendo le operazioni specificate e segnalandone lo stato di AWS IoT avanzamento. È possibile tenere traccia dell'avanzamento di un lavoro per un obiettivo specifico o per tutti gli obiettivi eseguendo i comandi forniti da AWS IoT Jobs. Quando viene avviato, un processo ha lo stato *In progress (In corso)*. I dispositivi segnalano quindi gli aggiornamenti incrementali durante la visualizzazione di questo stato fino alla corretta esecuzione, a un errore o al timeout del processo.

Gli argomenti seguenti descrivono alcuni concetti chiave relativi ai processi, al ciclo di vita dei processi e alle esecuzioni dei processi.

**Topics**
+ [Concetti chiave dei processi](key-concepts-jobs.md)
+ [Processi e stati di esecuzione dei processi](iot-jobs-lifecycle.md)

# Concetti chiave dei processi
<a name="key-concepts-jobs"></a>

I concetti seguenti forniscono dettagli sui AWS IoT lavori e su come creare e distribuire lavori per eseguire operazioni remote sui dispositivi.

## Concetti di base
<a name="basic-concepts-jobs"></a>

Di seguito sono riportati i concetti di base che è necessario conoscere quando si utilizza AWS IoT Jobs.

**Processo**  
Un processo è un'operazione remota che viene inviata a uno o più dispositivi connessi ad AWS IoT ed eseguita su di essi. Puoi ad esempio definire un processo che indichi a un insieme di dispositivi di scaricare e installare un'applicazione o eseguire aggiornamenti del firmware, eseguire il riavvio, ruotare i certificati o eseguire operazioni di risoluzione dei problemi in remoto.

**Documento del processo**  
Per creare un processo, devi prima creare un documento del processo che sia una descrizione delle operazioni remote che i dispositivi dovranno eseguire.  
I documenti dei processi sono documenti JSON con codifica UTF-8 che contengono le informazioni necessarie ai dispositivi per eseguire un processo. Un documento di lavoro contiene uno o più documenti URLs in cui il dispositivo può scaricare un aggiornamento o altri dati. Il documento del processo può essere archiviato in un bucket di Amazon S3 oppure essere incluso inline con il comando che crea il processo.  
Nelle risposte MQTT, il `jobDocument` campo è un oggetto JSON. Nelle risposte HTTP, è una rappresentazione in formato stringa dell'oggetto JSON.

**Target**  
Quando crei un processo, devi specificare un elenco di target che sono i dispositivi che devono eseguire le operazioni. I target possono essere oggetti, [gruppi di oggetti](thing-groups.md) o entrambi. Il servizio AWS IoT Jobs invia un messaggio a ciascuna destinazione per informarla della disponibilità di un lavoro.

**Distribuzione**  
Dopo avere creato un processo fornendo il documento di processo e specificato l'elenco di destinazioni, il documento di processo viene quindi distribuito sui dispositivi di destinazione remoti per i quali desideri eseguire l'aggiornamento. Per i processi snapshot, il processo viene completato dopo l'implementazione nei dispositivi di destinazione. Per i processi continui, il processo viene implementato su un gruppo di dispositivi quando questi vengono aggiunti ai gruppi.

**Esecuzione del processo**  
L'esecuzione di un processo è un'istanza di un processo su un dispositivo target. Il target avvia l'esecuzione di un processo scaricando il documento del processo. Quindi esegue le operazioni specificate nel documento e ne segnala lo stato di avanzamento a AWS IoT. Un numero di esecuzione è un identificatore univoco dell'esecuzione di un processo su un determinato target. Il servizio AWS IoT Jobs fornisce comandi per tenere traccia dell'avanzamento dell'esecuzione di un lavoro su un obiettivo e dell'avanzamento di un processo su tutte le destinazioni.

## Concetti relativi ai tipi di processo
<a name="advanced-concepts-jobs"></a>

I seguenti concetti possono aiutarti a comprendere meglio i diversi tipi di lavori che puoi creare con AWS IoT Jobs.

**Processo di snapshot**  
Per impostazione predefinita, un processo viene inviato a tutti i target specificati al momento della creazione del processo. Dopo che i target completano il processo (o segnalano l'impossibilità di farlo), il processo è completato.

**Processo continuo**  
Un processo continuo viene inviato a tutti i target specificati al momento della creazione del processo. Viene eseguito in modo continuo e inviato a tutti i nuovi dispositivi (oggetti) che vengono aggiunti al gruppo target. Ad esempio, un processo continuo può essere usato per eseguire l'onboarding o l'aggiornamento dei dispositivi quando vengono aggiunti a un gruppo. Puoi rendere un processo continuo impostando un parametro opzionale quando crei il processo.   
Quando il tuo parco istanze IoT di destinazione è definito utilizzando gruppi di oggetti dinamici, ti consigliamo di usare processi continui anziché i processi di snapshot. Utilizzando i processi continui, i dispositivi che si uniscono al gruppo ricevono l'esecuzione del processo anche dopo la creazione del processo.

## Predefinito URLs
<a name="security-concepts-jobs"></a><a name="presigned"></a>

Per un accesso sicuro e limitato nel tempo ai dati non inclusi nel documento di lavoro, puoi utilizzare Amazon S3 prefirmato. URLs Puoi inserire i dati in un bucket Amazon S3 e aggiungere un collegamento segnaposto ai dati nel documento del processo. Quando AWS IoT Jobs riceve una richiesta per il documento di lavoro, analizza il documento di lavoro cercando i link segnaposto, quindi sostituisce i link con Amazon S3 prefirmato. URLs

Il collegamento segnaposto ha il formato seguente:

```
${aws:iot:s3-presigned-url:https://s3.amazonaws.com/bucket/key}
```

*bucket*dov'è il nome del bucket e *key* l'oggetto nel bucket a cui ti stai collegando.

Nelle regioni di Pechino e Ningxia, i predefiniti URLs funzionano solo se il proprietario della risorsa dispone di una licenza ICP (Internet Content Provider). Per ulteriori informazioni, consulta [Amazon Simple Storage Service](https://docs.amazonaws.cn/en_us/aws/latest/userguide/s3.html) nella documentazione *Getting Started with AWS Services in Cina*.

## Concetti relativi alla configurazione dei processi
<a name="advanced-concepts-jobs"></a>

I concetti seguenti sono utili per comprendere come configurare processi.

**Rollouts**  
Puoi specificare con che velocità vengono inviate ai target le notifiche relative all'esecuzione di un processo in sospeso. In questo modo, è possibile creare un'implementazione per fasi, per gestire meglio aggiornamenti, riavvii e altre operazioni. È possibile creare una configurazione di rollout utilizzando una velocità di rollout statica o esponenziale. Per specificare il numero massimo di obiettivi di processo a cui inviare notifiche ogni minuto, utilizza una velocità di rollout costante.  
Per esempi di impostazione delle frequenze di implementazione e ulteriori informazioni sull'implementazione del processo di configurazione, consulta [Configurazioni di rollout, pianificazione e interruzione dei processi](jobs-configurations-details.md#job-rollout-abort-scheduling).

**Pianificazione**  
La pianificazione del processo consente di pianificare il periodo di tempo di implementazione di un documento del processo in tutti i dispositivi del gruppo di destinazione per processi continui e snapshot. Inoltre, è possibile creare una finestra di manutenzione opzionale contenente date e ore specifiche in cui un processo avvierà la distribuzione del documento del processo in tutti i dispositivi del gruppo di destinazione. Una finestra di manutenzione è un'istanza ricorrente con una frequenza di date e ore giornaliera, settimanale, mensile o personalizzata selezionata durante la creazione del processo iniziale o del modello di processo. È possibile pianificare solo processi continui per eseguire una distribuzione durante una finestra di manutenzione.  
La pianificazione dei processo è specifica del processo. Le singole esecuzioni del processo non possono essere pianificate. Per ulteriori informazioni, consulta [Configurazioni di rollout, pianificazione e interruzione dei processi](jobs-configurations-details.md#job-rollout-abort-scheduling).

**Interruzione**  
È possibile creare un insieme di condizioni per interrompere i rollout quando sono soddisfatti i criteri specificati. Per ulteriori informazioni, consulta [Configurazioni di rollout, pianificazione e interruzione dei processi](jobs-configurations-details.md#job-rollout-abort-scheduling).

**Timeout**  
I timeout del processo ti informano ogni volta che l'implementazione di un processo si blocca in stato `IN_PROGRESS` per un periodo di tempo inaspettatamente lungo. Sono disponibili due tipi di timer: in corso e della fase. Quando il processo è `IN_PROGRESS`, è possibile monitorare e tracciare il progresso dell'implementazione del processo.  
Le configurazioni di rollout e interruzione sono specifiche del processo, mentre la configurazione di timeout è specifica dell'implementazione del processo. Per ulteriori informazioni, consulta [Configurazioni di timeout e di nuovo tentativo di esecuzione del processo](jobs-configurations-details.md#job-timeout-retry).

**Tentativi**  
Le ripetizioni di tentativi per i processi permettono di riprovare l'esecuzione del processo in caso di errore e/o timeout del processo. Puoi definire fino a 10 nuovi tentativi di esecuzione del processo. È possibile monitorare e tracciare l'avanzamento del nuovo tentativo e verificare se l'esecuzione del processo è riuscita.  
Le configurazioni di rollout e interruzione sono specifiche del processo, mentre le configurazioni di timeout e ripetizione dei tentativi sono specifiche dell'esecuzione del processo. Per ulteriori informazioni, consulta [Configurazioni di timeout e di nuovo tentativo di esecuzione del processo](jobs-configurations-details.md#job-timeout-retry). 

# Processi e stati di esecuzione dei processi
<a name="iot-jobs-lifecycle"></a>

Le seguenti sezioni descrivono il ciclo di vita di un AWS IoT job e il ciclo di vita dell'esecuzione di un job.

## Job stati
<a name="iot-jobs-states"></a>

Il diagramma seguente mostra i diversi stati di un AWS IoT lavoro.

![\[Immagine che mostra i diversi stati di un AWS IoT lavoro.\]](http://docs.aws.amazon.com/it_it/iot/latest/developerguide/images/job-states-diagram.png)


Un lavoro creato utilizzando AWS IoT Jobs può trovarsi in uno dei seguenti stati:
+ 

**SCHEDULED**  
Durante la creazione iniziale del lavoro o del modello di lavoro utilizzando la AWS IoT console, [CreateJob](https://docs.aws.amazon.com/iot/latest/apireference/API_CreateJob.html)l'[CreateJobTemplate](https://docs.aws.amazon.com/iot/latest/apireference/API_CreateJobTemplate.html)API o l'API, puoi selezionare la configurazione di pianificazione opzionale nella AWS IoT console o `SchedulingConfig` nell'[CreateJob](https://docs.aws.amazon.com/iot/latest/apireference/API_CreateJob.html)API o nell'[CreateJobTemplate](https://docs.aws.amazon.com/iot/latest/apireference/API_CreateJobTemplate.html)API. Quando si avvia un processo pianificato contenente parametri `startTime`, `endTime` e `endBehavior` specifici, lo stato del processo viene aggiornato a `SCHEDULED`. Quando il processo raggiunge l’`startTime` selezionata o l’`startTime` della finestra di manutenzione successiva (se hai selezionato l’implementazione del processo durante una finestra di manutenzione), lo stato verrà aggiornato da `SCHEDULED` a `IN_PROGRESS` e inizierà il rollout del documento del processo a tutti i dispositivi del gruppo di destinazione.
+ 

**IN\$1PROGRESS**  
Quando si crea un lavoro utilizzando la AWS IoT console o l'[CreateJob](https://docs.aws.amazon.com/iot/latest/apireference/API_CreateJob.html)API, lo stato del processo viene aggiornato a`IN_PROGRESS`. Durante la creazione di un processo, AWS IoT Jobs inizia a implementare le esecuzioni del processo nei dispositivi del gruppo di destinazione. Una volta implementate tutte le esecuzioni del processo, AWS IoT Jobs attende che i dispositivi completino l’operazione remota. 

  Per informazioni sulla simultaneità e sui limiti applicabili ai processi in corso, consulta [AWS IoT Limiti dei lavori](job-limits.md).
**Nota**  
Quando un processo `IN_PROGRESS` raggiunge la fine della finestra di manutenzione corrente, la distribuzione del documento del processo si interrompe. Il processo verrà aggiornato a `SCHEDULED` fino alla `startTime` della finestra di manutenzione successiva.
+ 

**COMPLETED**  
Un processo continuo viene gestito in uno dei seguenti modi:
  + Un processo continuo *senza* la configurazione della pianificazione opzionale selezionata è sempre in corso e continua a essere eseguito per qualsiasi nuovo dispositivo che viene aggiunto al gruppo di destinazione. Non raggiungerà mai uno stato di `COMPLETED`.
  + Per un processo continuo *con* la configurazione della pianificazione opzionale selezionata, vale quanto segue:
    + Se *è stata* specificata una `endTime`, un processo continuo raggiungerà lo stato `COMPLETED` quando `endTime` è passata e tutte le esecuzioni del processo hanno raggiunto uno stato terminale.
    + Se *non è stata* specificata una `endTime` nella configurazione della pianificazione opzionale, il processo continuo continuerà a eseguire la distribuzione del documento del processo.

Per un processo snapshot, lo stato del processo diventa `COMPLETED` quando tutte le esecuzioni del processo raggiungono uno stato terminale, come `SUCCEEDED`, `FAILED`, `TIMED_OUT`, `REMOVED` o `CANCELED`.
+ 

**CANCELED (ANNULLATO)**  
Quando annulli un lavoro utilizzando la AWS IoT console, l'[CancelJob](https://docs.aws.amazon.com/iot/latest/apireference/API_CancelJob.html)API o il[Configurazione dell'interruzione del processo](jobs-configurations-details.md#job-abort-using), lo stato del lavoro cambia in`CANCELED`. Durante l'annullamento del lavoro, AWS IoT Jobs inizia ad annullare le esecuzioni di lavori create in precedenza.

  Per informazioni sulla simultaneità e sui limiti applicabili ai processi che sono in fase di cancellazione, consulta [AWS IoT Limiti dei lavori](job-limits.md).
+ 

**DELETION\$1IN\$1PROGRESS**  
Quando elimini un lavoro utilizzando la AWS IoT console o l'[DeleteJob](https://docs.aws.amazon.com/iot/latest/apireference/API_DeleteJob.html)API, lo stato del lavoro cambia in. `DELETION_IN_PROGRESS` Durante l'eliminazione dei AWS IoT job, Jobs inizia a eliminare le esecuzioni di job create in precedenza. Dopo che tutte le esecuzioni di job sono state eliminate, il job scompare dal tuo account. AWS 

## Stati di esecuzione del processo
<a name="iot-job-execution-states"></a>

La tabella seguente mostra i diversi stati di esecuzione di un AWS IoT job e se la modifica dello stato viene avviata dal dispositivo o da Jobs. AWS IoT 


**Origine e stati di esecuzione del processo**  

| Stato di esecuzione del processo | Iniziato dal dispositivo? | Avviato da Jobs AWS IoT ? | Stato del terminale? | Può essere riprovato? | 
| --- | --- | --- | --- | --- | 
| QUEUED | No | Sì | No | Non applicabile | 
| IN\$1PROGRESS | Sì | No | No | Non applicabile | 
| SUCCEEDED | Sì | No | Sì | Non applicabile | 
| FAILED | Sì | No | Sì | Sì | 
| TIMED\$1OUT | No | Sì | Sì | Sì | 
| REJECTED | Sì | No | Sì | No | 
| REMOVED | No | Sì | Sì | No | 
| CANCELED | No | Sì | Sì | No | 

La sezione seguente descrive ulteriori informazioni sugli stati di esecuzione di un lavoro che viene implementato quando si crea un lavoro con AWS IoT Jobs.
+ 

**IN CODA**  
Quando AWS IoT Jobs implementa un'esecuzione di lavoro per un dispositivo di destinazione, lo stato di esecuzione del lavoro è impostato su`QUEUED`. L'esecuzione del processo resta nello stato `QUEUED` finché non si verifica quanto segue:
  + Il dispositivo riceve l'esecuzione del processo, richiama le operazioni API Jobs e segnala lo stato come `IN_PROGRESS`.
  + Quando annulli correttamente il processo o l’esecuzione del processo o vengono soddisfatti i criteri che hai specificato usando una configurazione di interruzione, lo stato diventa `CANCELED`.
  + Il dispositivo viene rimosso dal gruppo di destinazione e lo stato diventa `REMOVED`.  
![\[Immagine che mostra come l'esecuzione di un processo in coda cambia lo stato in IN_PROGRESS e come un processo può essere RIFIUTATO se il dispositivo non accetta la richiesta di creazione del lavoro.\]](http://docs.aws.amazon.com/it_it/iot/latest/developerguide/images/JE-queued-inprogress.png)
+ 

**IN\$1PROGRESS**  
Se il dispositivo IoT si abbona alla rete riservata [Argomenti di processo](reserved-topics.md#reserved-topics-job) `$notify` e `$notify-next` il dispositivo richiama l'`StartNextPendingJobExecution`API o l'`UpdateJobExecution`API con uno stato di`IN_PROGRESS`, AWS IoT Jobs imposterà lo stato di esecuzione del processo su. `IN_PROGRESS`

  L'API `UpdateJobExecution` può essere richiamata più volte con lo stato `IN_PROGRESS`. Puoi specificare maggiori dettagli sulle fasi di esecuzione utilizzando l'oggetto `statusDetails`.
**Nota**  
Se crei più lavori per ogni dispositivo, AWS IoT Jobs e il protocollo MQTT non garantiscono l'ordine di consegna.
+ 

**RIUSCITA**  
Quando il dispositivo completa correttamente l'operazione remota, deve richiamare l'`UpdateJobExecution`API con uno stato pari `SUCCEEDED` a per indicare che l'esecuzione del processo è riuscita. AWS IoT Jobs quindi aggiorna e restituisce lo stato di esecuzione del lavoro come. `SUCCEEDED`   
![\[Immagine che mostra come l'esecuzione di un processo in corso può non riuscire e come riprovarla.\]](http://docs.aws.amazon.com/it_it/iot/latest/developerguide/images/JE-success-path.png)
+ 

**NON RIUSCITO**  
Quando il dispositivo non riesce a completare l'operazione remota, deve richiamare l'`UpdateJobExecution`API con uno stato pari `Failed` a per indicare che l'esecuzione del processo non è riuscita. AWS IoT Jobs quindi aggiorna e restituisce lo stato di esecuzione del lavoro come`Failed`. Puoi riprovare l'esecuzione del processo per il dispositivo usando la [Configurazione del nuovo tentativo di esecuzione del processo](jobs-configurations-details.md#job-retry-configuration).  
![\[Immagine che mostra come l'esecuzione di un processo in corso può non riuscire e come riprovarla.\]](http://docs.aws.amazon.com/it_it/iot/latest/developerguide/images/JE-inprogress-failed.png)
+ 

**TIMED\$1OUT**  
Quando il dispositivo non riesce a completare una fase di lavoro quando lo stato è`IN_PROGRESS`, o quando non riesce a completare l'operazione remota entro la durata del timeout del timer in corso, AWS IoT Jobs imposta lo stato di esecuzione del lavoro su. `TIMED_OUT` Hai anche un timer per ogni fase di un processo in corso che si applica solo all'esecuzione del processo. La durata del timer in corso viene specificata usando la proprietà `inProgressTimeoutInMinutes` della [Configurazione del timeout di esecuzione del processo](jobs-configurations-details.md#job-timeout-configuration). Puoi riprovare l'esecuzione del processo per il dispositivo usando la [Configurazione del nuovo tentativo di esecuzione del processo](jobs-configurations-details.md#job-retry-configuration).  
![\[Immagine che mostra come l'esecuzione di un processo in corso può scadere e come riprovarla.\]](http://docs.aws.amazon.com/it_it/iot/latest/developerguide/images/JE-inprogress-timedout.png)
+ 

**REJECTED**  
Quando il dispositivo riceve una richiesta non valida o incompatibile, deve richiamare l'`UpdateJobExecution`API con uno stato di. `REJECTED` AWS IoT Jobs quindi aggiorna e restituisce lo stato di esecuzione del processo come. `REJECTED`
+ 

**REMOVED**  
Quando il dispositivo non è più una destinazione valida per l'esecuzione del processo, ad esempio quando è scollegato da un gruppo di oggetti dinamico, AWS IoT Jobs imposta lo stato di esecuzione del processo su `REMOVED`. Puoi ricollegare l'oggetto al gruppo di destinazione e riavviare l'esecuzione del processo per il dispositivo.
+ 

**CANCELED (ANNULLATO)**  
Quando si annulla un lavoro o si annulla l'esecuzione di un lavoro utilizzando la console `CancelJob` o l'`CancelJobExecution`API o o quando vengono soddisfatti i criteri di interruzione specificati utilizzando il[Configurazione dell'interruzione del processo](jobs-configurations-details.md#job-abort-using), AWS IoT Jobs annulla il lavoro e imposta lo stato di esecuzione del lavoro su. `CANCELED`