

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

# AWS IoT Device Management Catalogo dei pacchetti software
<a name="software-package-catalog"></a>

Con AWS IoT Device Management Software Package Catalog, è possibile mantenere un inventario dei pacchetti software e delle relative versioni. [È possibile associare le versioni dei pacchetti a singoli elementi e gruppi di oggetti AWS IoT dinamici e distribuirli tramite processi o AWS IoT processi interni.](https://docs.aws.amazon.com/iot/latest/developerguide/iot-jobs.html) 

Un pacchetto software contiene una o più versioni del pacchetto, ovvero una raccolta di file che possono essere distribuiti come una singola unità. Le versioni del pacchetto possono contenere firmware, aggiornamenti del sistema operativo, applicazioni per dispositivi, configurazioni e patch di sicurezza. Con l'evolversi del software nel tempo, puoi creare una nuova versione del pacchetto e distribuirla nel parco istanze. 

L'hub del pacchetto AWS IoT software si trova all'interno. AWS IoT Core Puoi utilizzare l'hub per registrare e gestire centralmente l'inventario e i metadati del pacchetto software. Ciò consente di creare un catalogo di pacchetti software e delle relative versioni. Puoi scegliere di raggruppare i dispositivi in base ai pacchetti software e alle versioni dei pacchetti distribuiti sul dispositivo. Questa funzionalità offre la possibilità di mantenere l'inventario dei pacchetti lato dispositivo come una copia shadow con nome, associare e raggruppare i dispositivi in base alle versioni e visualizzare la distribuzione delle versioni del pacchetto nel parco istanze utilizzando parametri del parco istanze.

Se disponi di un sistema di implementazione del software interno, puoi continuare a utilizzare tale processo per distribuire le versioni dei pacchetti. Se non hai definito un processo di implementazione o se lo preferisci, è consigliabile utilizzare i [processi AWS IoT](https://docs.aws.amazon.com/iot/latest/developerguide/iot-jobs.html) per utilizzare le funzionalità del Software Package Catalog. Per ulteriori informazioni, vedere [Preparazione dei AWS IoT lavori](https://docs.aws.amazon.com/iot/latest/developerguide/preparing-jobs-for-service-package-catalog.html).

**Topics**
+ [Preparazione all'uso di Software Package Catalog](preparing-to-use-software-package-catalog.md)
+ [Preparazione della sicurezza](preparing-security.md)
+ [Preparazione dell'indicizzazione del parco istanze](preparing-fleet-indexing.md)
+ [Preparazione dei lavori AWS IoT](preparing-jobs-for-service-package-catalog.md)
+ [Nozioni di base su Software Package Catalog](getting-started-with-software-package-catalog.md)

# Preparazione all'uso di Software Package Catalog
<a name="preparing-to-use-software-package-catalog"></a>

La sezione seguente fornisce una panoramica del ciclo di vita delle versioni del pacchetto e informazioni per l'utilizzo del Software AWS IoT Device Management Package Catalog. 

## Ciclo di vita della versione del pacchetto
<a name="package-version-lifecycle"></a>

Una versione del pacchetto può evolvere attraverso i seguenti stati del ciclo di vita: `draft`, `published` e `deprecated`. Lo stato può anche essere `deleted`.

![\[Il ciclo di vita della versione del pacchetto con lo stato draft, published e deprecated. Lo stato può anche essere deleted.\]](http://docs.aws.amazon.com/it_it/iot/latest/developerguide/images/package-catalog-version-lifecycle.png)

+ **Draft**

  Quando si crea una versione del pacchetto, questa si trova in uno `draft` stato. Questo stato indica che il pacchetto software è in fase di preparazione o è incompleto.

  Mentre la versione del pacchetto è in questo stato, non è possibile distribuirla. È possibile modificare la descrizione, gli attributi e i tag della versione del pacchetto.

  Puoi trasferire una versione del pacchetto che si trova nello `draft` stato `published` o lo è `deleted` utilizzando la console o emettendo operazioni tramite l'[UpdatePackageVersion[DeletePackageVersion](https://docs.aws.amazon.com/iot/latest/apireference/API_DeletePackageVersion.html)](https://docs.aws.amazon.com/iot/latest/apireference/API_UpdatePackageVersion.html)API.
+ **Published**

  Quando la versione del pacchetto è pronta per la distribuzione, trasferisci la versione del pacchetto a uno `published` stato. In questo stato, puoi scegliere di identificare la versione del pacchetto come versione predefinita modificando il pacchetto software nella console o tramite l'operazione [UpdatePackage](https://docs.aws.amazon.com/iot/latest/apireference/API_UpdatePackage.html)API. In questo stato, puoi modificare solo la descrizione e i tag.

  Puoi trasferire una versione del pacchetto che si trova nello `published` stato `deprecated` o lo è `deleted` utilizzando la console o eseguendo operazioni [DeletePackageVersion](https://docs.aws.amazon.com/iot/latest/apireference/API_DeletePackageVersion.html)tramite l'[UpdatePackageVersion](https://docs.aws.amazon.com/iot/latest/apireference/API_UpdatePackageVersion.html)API.
+ **Deprecated**

  Se è disponibile una nuova versione del pacchetto, puoi eseguire la transizione delle versioni precedenti del pacchetto a `deprecated`. Puoi comunque distribuire lavori con una versione del pacchetto obsoleta. È inoltre possibile assegnare un nome a una versione obsoleta del pacchetto come versione predefinita e modificare solo la descrizione e i tag. 

  Prendi in considerazione la possibilità di passare a `deprecated` una versione del pacchetto una versione obsoleta, ma hai ancora dispositivi sul campo che utilizzano la versione precedente o devi mantenerla a causa della dipendenza in fase di esecuzione. 

  Puoi trasferire una versione del pacchetto che si trova nello `deprecated ` stato `published` o lo è utilizzando la console oppure eseguendo le operazioni o l'API. `deleted` [UpdatePackageVersion[DeletePackageVersion](https://docs.aws.amazon.com/iot/latest/apireference/API_DeletePackageVersion.html)](https://docs.aws.amazon.com/iot/latest/apireference/API_UpdatePackageVersion.html)
+ **Eliminato**

  Quando non intendi più utilizzare una versione del pacchetto, puoi eliminarla utilizzando la console o eseguendo l'operazione API. [DeletePackageVersion](https://docs.aws.amazon.com/iot/latest/apireference/API_DeletePackageVersion.html)
**Nota**  
Se elimini una versione del pacchetto mentre sono presenti processi in sospeso che fanno riferimento ad essa, riceverai un messaggio di errore quando il processo termina e tenta di aggiornare la copia shadow con nome.  
 Se la versione del pacchetto software che desideri eliminare è denominata come la versione del pacchetto predefinita, devi aggiornare innanzitutto il pacchetto specificando un'altra versione come predefinita o lasciare il campo senza nome. È possibile farlo utilizzando la console o l'operazione [UpdatePackageVersion](https://docs.aws.amazon.com/iot/latest/apireference/API_UpdatePackageVersion.html)API. (Per rimuovere qualsiasi versione denominata del pacchetto come predefinita, imposta il [unsetDefaultVersion](https://docs.aws.amazon.com/iot/latest/apireference/API_UpdatePackage.html#iot-UpdatePackage-request-unsetDefaultVersion)parametro su true quando esegui l'operazione [UpdatePackage](https://docs.aws.amazon.com/iot/latest/apireference/API_UpdatePackage.html)API).

  Se elimini un pacchetto software tramite la console, vengono eliminate tutte le versioni del pacchetto associate, a meno che una non sia denominata come la versione predefinita.

## Convenzioni di denominazione della versione del pacchetto
<a name="package-version-naming"></a>

Quando assegni un nome alle versioni dei pacchetti, è importante pianificare e applicare una strategia di denominazione logica affinché tutti siano in grado di identificare facilmente la versione del pacchetto più recente e la progressione della versione. Durante la creazione della versione del pacchetto, devi fornire un nome della versione, ma la strategia e il formato dipendono in gran parte dal business case.

Come procedura ottimale, consigliamo di utilizzare il formato Semantic Versioning [SemVer](https://semver.org/). Ad esempio, `1.2.3` dove `1` è la versione principale per le modifiche funzionalmente incompatibili, `2` è la versione principale per le modifiche funzionalmente compatibili e `3` è la versione patch (per correzioni di bug). Per ulteriori informazioni, consulta [Controllo delle versioni semantico 2.0.0](https://semver.org/). Per ulteriori informazioni sui requisiti relativi al nome della versione del pacchetto, consulta [VersionName](https://docs.aws.amazon.com/iot/latest/apireference/API_CreatePackageVersion.html#API_CreatePackageVersion_RequestSyntax) nella guida di riferimento dell' AWS IoT API.

## Versione predefinita
<a name="default-version"></a>

L'impostazione di una versione come predefinita è facoltativa. Puoi aggiungere o rimuovere versioni dei pacchetti predefinite. Inoltre, puoi distribuire una versione del pacchetto che non è specificata come versione predefinita.

Quando crei una versione del pacchetto, questa assume uno stato `draft` e non può essere denominata come la versione predefinita finché non esegui la transizione della versione del pacchetto a published. Software Package Catalog non seleziona automaticamente una versione come predefinita né aggiorna una versione più recente del pacchetto come quella predefinita. È necessario assegnare intenzionalmente un nome alla versione del pacchetto scelta tramite la console o eseguendo l'operazione API. [UpdatePackageVersion](https://docs.aws.amazon.com/iot/latest/apireference/API_UpdatePackageVersion.html)

## Attributi della versione
<a name="version-attributes"></a>

Gli attributi della versione e i relativi valori contengono informazioni importanti sulle versioni dei pacchetti. Si consiglia di definire attributi di uso generico per un pacchetto o una versione del pacchetto. Ad esempio, potrebbe essere necessario creare una coppia nome-valore per piattaforma, architettura, sistema operativo, data di rilascio, autore o URL Amazon S3.

 Quando crei un AWS IoT lavoro con un documento di lavoro, puoi anche scegliere di utilizzare una variabile di sostituzione (`$parameter`) che si riferisce al valore di un attributo. Per ulteriori informazioni, vedere [Preparazione AWS IoT](https://docs.aws.amazon.com/iot/latest/developerguide/preparing-jobs-for-service-package-catalog.html) dei lavori.

Gli attributi di versione utilizzati nelle versioni dei pacchetti non verranno aggiunti automaticamente allo shadow denominato riservato e non possono essere indicizzati o interrogati direttamente tramite Fleet Indexing. Per indicizzare o interrogare gli attributi della versione del pacchetto tramite Fleet Indexing, è possibile compilare l'attributo version nell'ombra denominata riservata.

Si consiglia che il parametro dell'attributo version nella cartella riservata named shadow acquisisca le proprietà riportate dal dispositivo, come il sistema operativo e l'ora di installazione. Possono anche essere indicizzati e interrogati tramite Fleet Indexing.

Gli attributi di versione non sono necessari per seguire una convenzione di denominazione specifica. Puoi creare coppie nome-valore per soddisfare le esigenze aziendali. La dimensione combinata di tutti gli attributi di una versione del pacchetto è limitata a 3 KB. Per ulteriori informazioni, vedere [Limiti del pacchetto software e delle versioni dei pacchetti del Software Package Catalog](https://docs.aws.amazon.com/general/latest/gr/iot_device_management.html#software_package_catalog_limits).

**Utilizzo di tutti gli attributi in un documento di lavoro**

È possibile aggiungere automaticamente tutti gli attributi della versione del pacchetto alla distribuzione del processo per dispositivi selezionati. Per utilizzare automaticamente tutti gli attributi della versione del pacchetto a livello di codice in un comando API o CLI, fate riferimento al seguente esempio di documento di lavoro:

```
"TestPackage": "${aws:iot:package:TestPackage:version:PackageVersion:attributes}"
```

## Elenco degli elementi software
<a name="software-bill-of-materials"></a>

La distinta base del software (SBOM) fornisce un archivio centrale per tutti gli aspetti del pacchetto software. Oltre a memorizzare i pacchetti software e le versioni dei pacchetti, è possibile archiviare la distinta base del software (SBOM) associata a ciascuna versione del AWS IoT Device Management pacchetto nel Software Package Catalog. Un pacchetto software contiene una o più versioni del pacchetto e ogni versione del pacchetto è composta da uno o più componenti. Ciascuno di questi componenti che supportano la composizione di una versione specifica del pacchetto può essere descritto e catalogato utilizzando una distinta dei materiali del software. Gli standard di settore per la lista dei materiali software supportati sono SPDX e CyclonedX. Quando un SBOM viene creato per la prima volta, viene sottoposto a convalida rispetto al formato standard di settore SPDX e CyclonedX. Per ulteriori informazioni su SPDX, vedere System [Package Data Exchange](https://spdx.dev/). [Per ulteriori informazioni su CyclonedX, vedere CyclonedX.](https://cyclonedx.org/)

La lista dei materiali del software descrive tutti gli aspetti dei componenti di una versione specifica del pacchetto, come le informazioni sul pacchetto, le informazioni sui file e altri metadati pertinenti. Vedi l'esempio seguente di struttura documentale di una distinta base del software in formato SPDX:

![\[Un esempio di SBOM in formato SPDX.\]](http://docs.aws.amazon.com/it_it/iot/latest/developerguide/images/spdx-2.3-document.png)


### Vantaggi della lista dei materiali del software
<a name="spc-sbom-benefits"></a>

Uno dei principali vantaggi dell'aggiunta della distinta base del software per una versione del pacchetto in Software Package Catalog è la gestione delle vulnerabilità.

**Gestione delle vulnerabilità**

La valutazione e la mitigazione della vulnerabilità agli apparenti rischi di sicurezza dei componenti software rimangono fondamentali per proteggere l'integrità del parco dispositivi. Con l'aggiunta della lista dei materiali software archiviata nel Software Package Catalog per ogni versione del pacchetto, è possibile individuare in modo proattivo le lacune nella sicurezza conoscendo quali dispositivi sono a rischio in base alla versione del pacchetto e alla SBOM utilizzando la propria soluzione di gestione delle vulnerabilità interna. Puoi implementare correzioni ai dispositivi interessati e proteggere la tua flotta di dispositivi.

### Software, distinta dei materiali, archiviazione
<a name="spc-sbom-storage"></a>

La distinta base del software (SBOM) per ogni versione del pacchetto software viene archiviata in un bucket Amazon S3 utilizzando la funzionalità di controllo delle versioni di Amazon S3. Il bucket Amazon S3 che memorizza la SBOM deve trovarsi nella stessa regione in cui è stata creata la versione del pacchetto. Un bucket Amazon S3 che utilizza la funzionalità di controllo delle versioni mantiene più varianti di un oggetto nello stesso bucket. Per ulteriori informazioni sull'utilizzo del controllo delle versioni in un bucket Amazon S3, [consulta Uso del controllo delle versioni nei bucket Amazon](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Versioning.html) S3.

**Nota**  
A ogni versione del pacchetto software possono essere allegati più file SBOM, ma i file SBOM devono essere archiviati in un unico file di archivio zip.

La chiave Amazon S3 e l'ID di versione specifici del bucket vengono utilizzati per identificare in modo univoco ogni versione di una distinta base software per una versione del pacchetto.

**Nota**  
Per una versione del pacchetto con un singolo file SBOM, puoi archiviare quel file SBOM nel tuo bucket Amazon S3 come file di archivio zip.  
Per una versione del pacchetto con più file SBOM, è necessario inserire tutti i file SBOM in un unico file di archivio zip e quindi archiviare tale file di archivio zip nel bucket Amazon S3.  
Tutti i file SBOM archiviati in un unico file di archivio zip in entrambi gli scenari sono formattati come file SPDX o CyclonedX .json.

**Politica sulle autorizzazioni**

Per AWS IoT agire come principale specificato per accedere ai file di archivio zip SBOM archiviati nel bucket Amazon S3, è necessaria una politica di autorizzazioni basata sulle risorse. Fai riferimento al seguente esempio per la corretta politica di autorizzazioni basata sulle risorse:

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Service": [
                    "iot.amazonaws.com"
                ]
        },
            "Action": "s3:*",
            "Resource": "arn:aws:s3:::bucketName/*"
        }
    ]
}
```

Per ulteriori informazioni sulle politiche di autorizzazione basate sulle risorse, vedere [AWS IoT politiche basate sulle risorse](security_iam_service-with-iam.md#security_iam_service-with-iam-resource-based-policies)

**Aggiornamento della SBOM**

È possibile aggiornare la distinta base del software tutte le volte che è necessario per proteggere e potenziare il parco dispositivi. Ogni volta che la distinta base del software viene aggiornata nel tuo bucket Amazon S3, l'ID della versione cambia e devi associare il nuovo URL del bucket Amazon S3 alla versione del pacchetto software appropriata. Vedrai il nuovo ID di versione nella colonna **ID della versione di Amazon S3 Object** nella pagina della versione del pacchetto nel. Console di gestione AWS Inoltre, puoi utilizzare l'operazione API `[GetPackageVersion](https://docs.aws.amazon.com/iot/latest/apireference/API_GetPackageVersion.html)` o il comando CLI `[get-package-version](https://docs.aws.amazon.com/cli/latest/reference/iot/get-package-version.html)` per visualizzare l'ID della nuova versione.

**Nota**  
L'aggiornamento della distinta base del software, che comporterà un nuovo ID di versione, non comporterà la creazione di una nuova versione del pacchetto.

Per ulteriori informazioni sulle chiavi oggetto di Amazon S3, consulta [Creazione di nomi di chiavi di oggetto](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-keys.html).

## Abilitare l'indicizzazione del AWS IoT parco veicoli
<a name="enable-fleet-indexing"></a>

L'abilitazione dell'indicizzazione AWS IoT della flotta è un requisito per utilizzare Software AWS IoT Device Management Package Catalog. Per sfruttare l'indicizzazione AWS IoT della flotta con Software Package Catalog, imposta il nome riservato shadow (`$package`) come origine dati per ogni dispositivo su cui desideri indicizzare e raccogli le metriche. Per ulteriori informazioni sulle ombre denominate riservate, consulta. [Copia shadow con nome riservata](#reserved-named-shadow)

L'indicizzazione del parco veicoli fornisce un supporto che consente di raggruppare gli AWS IoT elementi tramite gruppi di oggetti dinamici filtrati in base alla versione del pacchetto software. Ad esempio, l'indicizzazione del parco istanze può identificare gli oggetti in cui è installata o non è installata una versione del pacchetto specifica, che non dispongono di versioni dei pacchetti installate o che corrispondono a coppie nome-valore specifiche. Infine, l'indicizzazione della flotta fornisce metriche standard e personalizzate che puoi utilizzare per ottenere informazioni sullo stato del tuo parco dispositivi. Per ulteriori informazioni, consulta [Preparazione dell'indicizzazione del parco istanze](preparing-fleet-indexing.md).

**Nota**  
L'abilitazione dell'indicizzazione del parco istanze per Software Package Catalog comporta costi di servizio standard. Per ulteriori informazioni, consulta [Prezzi di AWS IoT Device Management](https://aws.amazon.com/iot-device-management/pricing/). 

## Copia shadow con nome riservata
<a name="reserved-named-shadow"></a>

La copia shadow con nome riservata, `$package`, riflette lo stato dei pacchetti software installati e delle versioni dei pacchetti del dispositivo. L'indicizzazione del parco istanze utilizza la copia shadow con nome riservata come un'origine dati per creare parametri standard e personalizzati in modo da poter eseguire query sullo stato del parco istanze. Per ulteriori informazioni, consulta [Preparazione dell'indicizzazione del parco istanze](https://docs.aws.amazon.com/iot/latest/developerguide/preparing-fleet-indexing.html).

Una copia shadow con nome riservata è simile a una [copia shadow con nome](https://docs.aws.amazon.com/iot/latest/developerguide/iot-device-shadows.html), con la differenza che il suo nome è predefinito e non può essere modificato. Inoltre, la copia shadow con nome riservata non viene aggiornata con i metadati e utilizza solo le parole chiave `version` e `attributes`.

Le richieste di aggiornamento che includono altre parole chiave, ad esempio`description`, riceveranno una risposta di errore nell'argomento. `rejected` Per ulteriori informazioni, consulta [Messaggi di errore  Device Shadow](https://docs.aws.amazon.com/iot/latest/developerguide/device-shadow-error-messages.html).

Può essere creato quando si crea un AWS IoT oggetto tramite la console, quando un AWS IoT processo completa e aggiorna correttamente lo shadow e se si esegue l'operazione [https://docs.aws.amazon.com/iot/latest/apireference/API_iotdata_UpdateThingShadow.html](https://docs.aws.amazon.com/iot/latest/apireference/API_iotdata_UpdateThingShadow.html)API. Per ulteriori informazioni, consulta [UpdateThingShadow](https://docs.aws.amazon.com/iot/latest/developerguide/device-shadow-rest-api.html#API_UpdateThingShadow)la guida per gli AWS IoT Core sviluppatori. 

**Nota**  
L'indicizzazione della copia shadow con nome riservata non conta ai fini del numero di copie shadow con nome che possono essere indicizzate dall'indicizzazione del parco istanze. Per ulteriori informazioni, consulta [Limiti e quote per l'indicizzazione del parco istanze di AWS IoT Device Management](https://docs.aws.amazon.com/general/latest/gr/iot_device_management.html#fleet-indexing-limits). Inoltre, se si sceglie di fare in modo che i AWS IoT job aggiornino il named shadow riservato quando un job viene completato con successo, la chiamata API viene conteggiata per le operazioni di Device Shadow e del registro e può comportare un costo. Per ulteriori informazioni, consulta [i limiti e le quote dei AWS IoT Device Management lavori e il tipo di](https://docs.aws.amazon.com/general/latest/gr/iot_device_management.html#job-limits) dati dell'[IndexingFilter](https://docs.aws.amazon.com/iot/latest/apireference/API_IndexingFilter.html)API.

**Struttura della copia shadow `$package`**

La copia shadow con nome riservata contiene quanto segue:

```
{
    "state": {
        "reported": {
            "<packageName>": {
                "version": "",
                "attributes": {
                }
            }
        }
    },
    "version" : 1
    "timestamp" : 1672531201
}
```

Le proprietà della copia shadow vengono aggiornate con le seguenti informazioni:
+  `<packageName>`: il nome del pacchetto software installato, che viene aggiornato con il parametro [packageName](https://docs.aws.amazon.com/iot/latest/apireference/API_CreatePackage.html#API_CreatePackage_RequestSyntax). 
+  `version`: il nome della versione del pacchetto installato, che viene aggiornato con il parametro [packageName](https://docs.aws.amazon.com/iot/latest/apireference/API_CreatePackageVersion.html#API_CreatePackageVersion_RequestSyntax). 
+  `attributes`: metadati opzionali memorizzati dal dispositivo e indicizzati dall'indicizzazione Fleet. Ciò consente ai clienti di interrogare i propri indici in base ai dati memorizzati. 
+ `version`: il numero di versione della copia shadow. Viene incrementato automaticamente ogni volta che la copia shadow viene aggiornata e inizia da `1`. 
+ `timestamp`: indica quando la copia shadow è stata aggiornata l'ultima volta e viene registrato nell'[ora Unix.](https://en.wikipedia.org/wiki/Unix_time)

Per ulteriori informazioni sul formato e il comportamento di una copia shadow con nome, consultare [Ordine dei messaggi Servizio AWS IoT Device Shadow](https://docs.aws.amazon.com/iot/latest/developerguide/iot-device-shadows.html#message-ordering). 

## Eliminazione di un pacchetto software e delle relative versioni del pacchetto
<a name="deleting-packages-and-versions"></a>

Prima di eliminare un pacchetto software, effettua le seguenti operazioni:
+ Conferma che il pacchetto e le relative versioni non vengano distribuiti attivamente. 
+ Elimina per prima cosa tutte le versioni associate. Se una delle versioni è designata come la **versione predefinita**, devi rimuovere la versione predefinita con nome dal pacchetto. Poiché la designazione di una versione predefinita è opzionale, la rimozione non causa alcun conflitto. Per rimuovere la versione predefinita dal pacchetto software, modifica il pacchetto tramite la console o utilizza l'operazione [ UpdatePackageVersion](https://docs.aws.amazon.com/iot/latest/apireference/API_UpdatePackageVersion.html)API.

Finché non esiste una versione del pacchetto predefinita con nome, puoi utilizzare la console per eliminare un pacchetto software. Verranno eliminate anche tutte le versioni del pacchetto. Se utilizzi una chiamata API per eliminare i pacchetti software, devi eliminare prima le versioni dei pacchetti e quindi il pacchetto software. 

# Preparazione della sicurezza
<a name="preparing-security"></a>

Questa sezione descrive i principali requisiti di sicurezza per AWS IoT Device Management Software Package Catalog.

## Autenticazione basata sulle risorse
<a name="resource-based-authorization"></a>

Software Package Catalog utilizza l'autorizzazione basata sulle risorse per fornire maggiore sicurezza durante l'aggiornamento del software sul parco istanze. Ciò significa che è necessario creare una policy AWS Identity and Access Management (IAM) che conceda i diritti di esecuzione`create`, `read` `update``delete`, e `list` azioni per i pacchetti software e le versioni dei pacchetti e fare riferimento ai pacchetti software e alle versioni dei pacchetti specifici che si desidera distribuire nella sezione. `Resources` Queste autorizzazioni sono necessarie anche per aggiornare la [copia shadow con nome riservata](https://docs.aws.amazon.com/iot/latest/developerguide/preparing-to-use-software-package-catalog.html#reserved-named-shadow). Puoi fare riferimento ai pacchetti software e alle versioni dei pacchetti includendo un nome della risorsa Amazon (ARN) per ciascuna entità.

**Nota**  
Se intendi che la policy conceda i diritti per le chiamate API delle versioni del pacchetto (come [CreatePackageVersion[UpdatePackageVersion](https://docs.aws.amazon.com/iot/latest/apireference/API_UpdatePackageVersion.html)](https://docs.aws.amazon.com/iot/latest/apireference/API_CreatePackageVersion.html),, [DeletePackageVersion](https://docs.aws.amazon.com/iot/latest/apireference/API_DeletePackageVersion.html)), devi includere ARNs nella policy *sia* il pacchetto software che la versione del pacchetto. Se intendi che la politica conceda diritti per le chiamate API dei pacchetti software (ad esempio [CreatePackage[UpdatePackage](https://docs.aws.amazon.com/iot/latest/apireference/API_UpdatePackage.html)](https://docs.aws.amazon.com/iot/latest/apireference/API_CreatePackage.html), e [DeletePackage](https://docs.aws.amazon.com/iot/latest/apireference/API_DeletePackage.html)), devi includere solo il pacchetto software ARN nella politica.

Strutturate il pacchetto software e la versione del pacchetto ARNs come segue:
+ Pacchetto software: `arn:aws:iot:<region>:<accountID>:package/<packageName>/package` 
+ Versione del pacchetto: `arn:aws:iot:<region>:<accountID>:package/<packageName>/version/<versionName>` 

**Nota**  
Sono disponibili altri diritti correlati che potrebbe essere necessario includere in questa policy. Ad esempio, potrebbe essere necessario includere un ARN per `job`, `thinggroup` e `jobtemplate`. Per ulteriori informazioni e un elenco completo delle opzioni di policy, consulta [Proteggere utenti e dispositivi con AWS IoT Jobs](https://docs.aws.amazon.com/iot/latest/developerguide/iot-jobs-security.html).

Ad esempio, se disponi di un pacchetto software e una versione del pacchetto denominati come segue:
+ AWS IoT cosa: `myThing`
+ Nome pacchetto: `samplePackage`
+ Versione `1.0.0`

L'aspetto della policy potrebbe essere simile all'esempio seguente:

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iot:createPackage",
                "iot:createPackageVersion",
                "iot:updatePackage",
                "iot:updatePackageVersion"
            ],
            "Resource": [
               "arn:aws:iot:us-east-1:111122223333:package/samplePackage",
               "arn:aws:iot:us-east-1:111122223333:package/samplePackage/version/1.0.0"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "iot:GetThingShadow",
                "iot:UpdateThingShadow"
            ],
            "Resource": "arn:aws:iot:us-east-1:111122223333:thing/myThing/$package"
        }
    ]
}
```

## AWS IoT Job rights per distribuire le versioni dei pacchetti
<a name="job-rights-deploy-versions"></a>

Per motivi di sicurezza, è importante concedere diritti per distribuire pacchetti e versioni dei pacchetti e assegnare un nome ai pacchetti e alle versioni dei pacchetti specifici che sono autorizzati a distribuire. A questo scopo, puoi creare un ruolo e una policy IAM che concedono l'autorizzazione per distribuire processi con versioni dei pacchetti. La policy deve specificare le versioni dei pacchetti di destinazione come una risorsa.

**Policy IAM**

La policy IAM concede il diritto per creare un processo che include il pacchetto e la versione denominati nella sezione `Resource`.

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iot:CreateJob",
                "iot:CreateJobTemplate"
            ],
            "Resource":[
                "arn:aws:iot:*:111122223333:job/<jobId>",
                "arn:aws:iot:*:111122223333:thing/<thingName>/$package",
                "arn:aws:iot:*:111122223333:thinggroup/<thingGroupName>",
                "arn:aws:iot:*:111122223333:jobtemplate/<jobTemplateName>",
                "arn:aws:iot:*:111122223333:package/<packageName>/version/<versionName>"
            ]
        }
    ]
}
```

**Nota**  
Se si desidera distribuire un processo che disinstalla un pacchetto software e una versione del pacchetto, `$null` è necessario autorizzare un ARN in cui si trova la versione del pacchetto, come nel seguente:

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

## AWS IoT Diritti di lavoro per aggiornare l'ombra denominata riservata
<a name="job-rights-update-reserved-named-shadow"></a>

Per consentire ai processi di aggiornare la copia shadow con nome riservata quando il processo viene completato correttamente, devi creare un ruolo e una policy IAM. Sono disponibili due modi per eseguire questa operazione nella console  AWS IoT . Il primo è quando crei un pacchetto software nella console. Se viene visualizzata una finestra di dialogo **Abilita dipendenze per la gestione dei pacchetti**, puoi scegliere di utilizzare un ruolo esistente o crearne uno nuovo. Oppure, nella console  AWS IoT , scegli **Impostazioni**, seleziona **Gestisci indicizzazione**, quindi **Gestisci indicizzazione per pacchetti e versioni dei dispositivi**. 

**Nota**  
Se si sceglie di fare in modo che il servizio AWS IoT Job aggiorni lo shadow denominato riservato quando un processo viene completato correttamente, la chiamata API viene conteggiata per **le operazioni di Device Shadow e del registro** e può comportare un costo. Per ulteriori informazioni, consultare [Prezzi di AWS IoT Core](https://aws.amazon.com/iot-core/pricing/).

Quando utilizzi l'opzione **Crea ruolo**, il nome del ruolo generato inizia con `aws-iot-role-update-shadows` e contiene le seguenti policy:

**Impostazione di un ruolo**

**Permissions**  
La policy delle autorizzazioni concede i diritti per eseguire query sulla shadow oggetto e aggiornarla. Il parametro `$package` nell'ARN della risorsa ha come target la copia shadow con nome riservata.    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "iot:DescribeEndpoint",
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "iot:GetThingShadow",
                "iot:UpdateThingShadow"
            ],
            "Resource": [
            "arn:aws:iot:us-east-1:111122223333:thing/<thingName>/$package"
            ]
        }
    ]
}
```

**Relazione di attendibilità**  
Oltre alla policy delle autorizzazioni, il ruolo richiede una relazione di attendibilità con AWS IoT Core  in modo che l'entità possa assumere il ruolo e aggiornare la copia shadow con nome riservata.    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Service": "iot.amazonaws.com"
        },
            "Action": "sts:AssumeRole"
        }
    ]
}
```

**Impostazione di una policy utente**

**iam: autorizzazione PassRole **  
Infine, devi avere l'autorizzazione a passare il ruolo a AWS IoT Core quando chiami l'operazione [ UpdatePackageConfiguration](https://docs.aws.amazon.com/iot/latest/apireference/API_UpdatePackageConfiguration.html)API.    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iam:PassRole",
                "iot:UpdatePackageConfiguration"
            ],
            "Resource": "arn:aws:iam::111122223333:role/<roleName>"
        }
    ]
}
```

## AWS IoT Autorizzazioni per il download di Jobs da Amazon S3
<a name="job-rights-download-job-document"></a>

Il documento del processo viene salvato in Amazon S3. Fai riferimento a questo file quando effettui l'invio tramite Jobs. AWS IoT Devi fornire a AWS IoT Jobs i diritti per scaricare il file (`s3:GetObject`). È inoltre necessario impostare una relazione di fiducia tra Amazon S3 e AWS IoT Jobs. Per istruzioni su come creare queste politiche, consulta [Presigned URLs](https://docs.aws.amazon.com/iot/latest/developerguide/create-manage-jobs.html#create-manage-jobs-presigned-URLs) in [Managing](https://docs.aws.amazon.com/iot/latest/developerguide/create-manage-jobs.html) Jobs.

## Autorizzazioni per aggiornare la distinta base del software per una versione del pacchetto
<a name="job-rights-update-sbom"></a>

Per aggiornare la distinta base del software per una versione del pacchetto negli stati o del `Draft` `Deprecated` ciclo di vita, sono necessari un AWS Identity and Access Management ruolo e delle politiche per individuare la nuova distinta base del software in Amazon S3 e aggiornare la versione del pacchetto in. `Published` AWS IoT Core

Innanzitutto, inserirai la distinta base del software aggiornata nella tua versione del bucket Amazon S3 e richiamerai l'operazione `[UpdatePackageVersion](https://docs.aws.amazon.com/iot/latest/apireference/API_UpdatePackageVersion.html)` dell'API con `sboms` il parametro incluso. Successivamente, il responsabile autorizzato assumerà il ruolo IAM che hai creato, individuerà la distinta base del software aggiornata in Amazon S3 e aggiornerà la versione del pacchetto in AWS IoT Core Software Package Catalog.

Per eseguire questo aggiornamento sono necessarie le seguenti politiche:

**Policy**
+ **Politica di fiducia** che stabilisce un rapporto di fiducia con il principale autorizzato che assume il ruolo di IAM in modo che possa individuare la distinta base aggiornata del software dal bucket con versione del bucket in Amazon S3 e aggiornare la versione del pacchetto in. AWS IoT Core
  +   
****  

    ```
    {
        "Version":"2012-10-17",		 	 	 
        "Statement": [
            {
                "Effect": "Allow",
                "Principal": {
                    "Service": "s3.amazonaws.com"
            },
                "Action": "sts:AssumeRole"
            }
        ]
    }
    ```
  +   
****  

    ```
    {
        "Version":"2012-10-17",		 	 	 
        "Statement": [
            {
                "Effect": "Allow",
                "Principal": {
                    "Service": "iot.amazonaws.com"
            },
                "Action": "sts:AssumeRole"
            }
        ]
    }
    ```
+ **Politica sulle autorizzazioni**: politica per accedere al bucket con versioni di Amazon S3 in cui è archiviata la distinta base del software per una versione del pacchetto e in cui aggiornare la versione del pacchetto. AWS IoT Core
  +   
****  

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

    ```
    {
        "Version":"2012-10-17",		 	 	 
        "Statement": [
            {
                "Effect": "Allow",
                "Action": [
                    "iot:UpdatePackageVersion"
                ],
                "Resource": [
                    "arn:aws:iot:*:111122223333:package/<packageName>/version/<versionName>"
                ]
            }
        ]
    }
    ```
+ **Passa le autorizzazioni dei ruoli**: policy che concede l'autorizzazione a passare il ruolo IAM ad Amazon S3 AWS IoT Core e quando `[UpdatePackageVersion](https://docs.aws.amazon.com/iot/latest/apireference/API_UpdatePackageVersion.html)` chiami l'operazione API.
  +   
****  

    ```
    {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
        {
          "Effect": "Allow",
          "Action": [
            "iam:PassRole",
            "s3:GetObject"
          ],
          "Resource": [
            "arn:aws:s3:::awsexamplebucket1"
          ]
        }
      ]
    }
    ```
  +   
****  

    ```
    {
        "Version":"2012-10-17",		 	 	 
        "Statement": [
            {
                "Effect": "Allow",
                "Action": [
                    "iam:PassRole",
                    "iot:UpdatePackageVersion"
                ],
                "Resource": "arn:aws:iam::111122223333:role/<roleName>"
            }
        ]
    }
    ```

**Nota**  
Non è possibile aggiornare la distinta base del software su una versione del pacchetto che è passata allo stato del ciclo di vita. `Deleted`

Per ulteriori informazioni sulla creazione di un ruolo IAM per un AWS servizio, consulta [Creazione di un ruolo per delegare l'autorizzazione](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html) a un servizio. AWS 

[Per ulteriori informazioni sulla creazione di un bucket Amazon S3 e sul caricamento di oggetti in esso, consulta [Creazione di un bucket](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket-overview.html) e Caricamento di oggetti.](https://docs.aws.amazon.com/AmazonS3/latest/userguide/upload-objects.html)

# Preparazione dell'indicizzazione del parco istanze
<a name="preparing-fleet-indexing"></a>

Con l'indicizzazione AWS IoT della flotta, puoi cercare e aggregare i dati utilizzando il nome riservato shadow (). `$package` [Puoi anche raggruppare gli AWS IoT oggetti interrogando i gruppi di oggetti [Copia shadow con nome riservata](preparing-to-use-software-package-catalog.md#reserved-named-shadow) dinamici.](https://docs.aws.amazon.com/iot/latest/developerguide/dynamic-thing-groups.html) Ad esempio, è possibile trovare informazioni su quali AWS IoT elementi utilizzano una versione specifica del pacchetto, su quali non è installata una versione specifica del pacchetto o su quali non è installata alcuna versione del pacchetto. Puoi ottenere ulteriori informazioni dettagliate combinando gli attributi. Ad esempio, identificare gli elementi che hanno una versione specifica e sono di un tipo di oggetto specifico (come la versione 1.0.0 e il tipo di oggetto di pump\$1sensor). Per ulteriori informazioni, consulta [Indicizzazione del parco istanze](https://docs.aws.amazon.com/iot/latest/developerguide/iot-indexing.html).

## Impostazione della copia shadow `$package` come un'origine dati
<a name="shadow-as-data-source"></a>

Per utilizzare l'indicizzazione del parco istanze con Software Package Catalog, devi abilitare l'indicizzazione del parco istanze, impostare la copia shadow con nome come l'origine dati e definire `$package` come il filtro della copia shadow con nome. Se non hai abilitato l'indicizzazione del parco istanze, puoi abilitarla all'interno di questo processo. Da [AWS IoT Core](https://console.aws.amazon.com/iot/home) nella console, apri **Impostazioni**, scegli **Gestisci indicizzazione**, quindi seleziona **Aggiungi copie shadow denominate**, **Aggiunta di pacchetti software del dispositivo e versioni** e **Aggiorna**. Per ulteriori informazioni, consulta [Gestione dell'indicizzazione degli oggetti](https://docs.aws.amazon.com/iot/latest/developerguide/managing-fleet-index.html#thing-index). 

In alternativa, puoi abilitare l'indicizzazione del parco istanze quando crei il primo pacchetto. Quando viene visualizzata la finestra di dialogo **Abilita dipendenze per la gestione dei pacchetti**, scegli l'opzione per aggiungere pacchetti e versioni software del dispositivo come origini dati all'indicizzazione del parco istanze. Selezionando questa opzione, abiliti anche l'indicizzazione del parco istanze.

**Nota**  
L'abilitazione dell'indicizzazione del parco istanze per Software Package Catalog comporta costi di servizio standard. Per ulteriori informazioni, consulta [Prezzi di AWS IoT Device Management](https://aws.amazon.com/iot-device-management/pricing/).

## Parametri visualizzati nella console
<a name="metrics-displayed-in-console"></a>

![\[Immagine dei parametri standard\]](http://docs.aws.amazon.com/it_it/iot/latest/developerguide/images/package-catalog-discovery-metrics.png)


Nella pagina dei dettagli del pacchetto software della AWS IoT console, il pannello **Discovery** mostra le metriche standard acquisite dall'ombra. `$package`
+ Il grafico di **distribuzione della versione corrente** mostra il numero di dispositivi e la percentuale per le 10 versioni del pacchetto più recenti associate a un AWS IoT elemento tra tutti i dispositivi associati a questo pacchetto software. **Nota:** se il pacchetto software dispone di più versioni del pacchetto di quelle etichettate nel grafico, puoi trovarle raggruppate in **Altro**.
+ Nel **Grafico storico** viene visualizzato il numero di dispositivi associati alle versioni dei pacchetti selezionate in un periodo di tempo specificato. Il grafico è inizialmente vuoto finché non si seleziona un massimo di 5 versioni del pacchetto e si definisce l'intervallo di date e l'intervallo di tempo. Per selezionare i parametri del grafico, scegli **Impostazioni**. I dati visualizzati nel **Grafico storico** potrebbero essere diversi da quelli del grafico **Distribuzione della versione corrente** a causa della differenza nel numero di versioni del pacchetto visualizzate e anche perché puoi scegliere quali versioni del pacchetto analizzare nel **Grafico storico**. **Nota:** quando selezioni una versione del pacchetto da visualizzare, questa viene conteggiata ai fini del numero massimo di limiti dei parametri del parco istanze. Per ulteriori informazioni, consulta [Limiti e quote per l'indicizzazione del parco istanze](https://docs.aws.amazon.com/general/latest/gr/iot_device_management.html#fleet-indexing-limits).

Per un altro metodo per ottenere informazioni dettagliate sulla raccolta della distribuzione delle versioni dei pacchetti, consulta [Raccolta della distribuzione delle versioni dei pacchetti tramite `getBucketsAggregation`](https://docs.aws.amazon.com/iot/latest/developerguide/preparing-fleet-indexing.html#package-version-distribution).

## Modelli di query
<a name="query-patterns"></a>

L'indicizzazione del parco veicoli con Software Package Catalog utilizza la maggior parte delle funzionalità standard supportate (come termini, frasi e campi di ricerca). Tuttavia, gli operatori di confronto (ad esempio, minore di `<` e maggiore di`>`) e `range` le query non sono disponibili per la chiave riservata denominata shadow (). `$package` `version` Queste interrogazioni sono disponibili per la `attributes` chiave. Per ulteriori informazioni, consulta [Sintassi delle query](https://docs.aws.amazon.com/iot/latest/developerguide/query-syntax.html).

### Dati di esempio
<a name="query-patterns-example-data"></a>

**Nota:** per informazioni sulla copia shadow con nome riservata e la struttura relativa, consulta [Copia shadow denominata riservata](https://docs.aws.amazon.com/iot/latest/developerguide/preparing-to-use-software-package-catalog.html#reserved-named-shadow).

In questo esempio, un primo dispositivo viene denominato `AnyThing` e dispone dei seguenti pacchetti installati: 
+ Pacchetto software: `SamplePackage`

  Versione del pacchetto: `1.0.0`

  ID pacchetto: `1111`

L'aspetto della copia shadow è il seguente:

```
{
    "state": {
        "reported": {
            "SamplePackage": {
                "version": "1.0.0",
                "attributes": {
                    "s3UrlForSamplePackage": "https://EXAMPIEBUCKET.s3.us-west-2.amazonaws.com/exampleCodeFile1",
                    "packageID": "1111"
                    }
            }
        }
    }
}
```

Un secondo dispositivo viene denominato `AnotherThing` e dispone dei seguenti pacchetti installati: 
+ Pacchetto software: `SamplePackage`

  Versione del pacchetto: `1.0.0`

  ID pacchetto: `1111`
+ Pacchetto software: `OtherPackage`

  Versione del pacchetto: `1.2.5`

  ID pacchetto: `2222`

L'aspetto della copia shadow è il seguente:

```
{
    "state": {
        "reported": {
            "SamplePackage": {
                "version": "1.0.0",
                "attributes": {
                    "s3UrlForSamplePackage": "https://EXAMPIEBUCKET.s3.us-west-2.amazonaws.com/exampleCodeFile1",
                    "packageID": "1111"
                }
            },
            "OtherPackage": {
                "version": "1.2.5",
                "attributes": {
                    "s3UrlForOtherPackage": "https://EXAMPIEBUCKET.s3.us-west-2.amazonaws.com/exampleCodeFile2",
                    "packageID": "2222"
                    }
            },
        }
    }
}
```

### Query di esempio
<a name="sample-queries"></a>

Nella tabella seguente vengono elencate query campione basate sulle device shadow di esempio per `AnyThing` e `AnotherThing`. Per ulteriori informazioni, consulta [Esempio di query per oggetti](https://docs.aws.amazon.com/iot/latest/developerguide/example-queries.html). 


**Versione più recente di AWS IoT Device Tester for FreerTOS**  

| **Informazioni richieste** | **Query** | **Risultato** | 
| --- | --- | --- | 
|  Oggetti con installata una versione del pacchetto specifica  |  `shadow.name.$package.reported.SamplePackage.version:1.0.0`  |  `AnyThing`, `OtherThing`  | 
|  Oggetti che non hanno una versione del pacchetto specifica installata  |  `NOT shadow.name.$package.reported.OtherPackage.version:1.2.5`  |  `AnyThing`  | 
|  Qualsiasi dispositivo che utilizza una versione del pacchetto il cui ID pacchetto è maggiore di 1500  |  `shadow.name.$package.reported.*.attributes.packageID>1500"`  |  `OtherThing`  | 
|  Oggetti con installato un pacchetto specifico e con installati più pacchetti  |  `shadow.name.$package.reported.SamplePackage.version:1.0.0 AND shadow.name.$package.reported.totalCount:2`  |  `OtherThing`  | 

## Raccolta della distribuzione delle versioni dei pacchetti tramite `getBucketsAggregation`
<a name="package-version-distribution"></a>

Oltre al pannello **Discovery** all'interno della AWS IoT console, puoi anche ottenere informazioni sulla distribuzione della versione del pacchetto utilizzando l'operazione [https://docs.aws.amazon.com/iot/latest/apireference/API_GetBucketsAggregation.html](https://docs.aws.amazon.com/iot/latest/apireference/API_GetBucketsAggregation.html)API. Per ottenere informazioni sulla distribuzione delle versioni dei pacchetti, devi eseguire le seguenti operazioni:
+ Definisci un campo personalizzato all'interno dell'indicizzazione del parco istanze per ogni pacchetto software. **Nota:** la creazione di campi personalizzati conta ai fini delle [Service Quotas di indicizzazione del parco istanze AWS IoT](https://docs.aws.amazon.com/general/latest/gr/iot_device_management.html#fleet-indexing-limits). 
+ Formatta il campo personalizzato come segue:

  `shadow.name.$package.reported.<packageName>.version`

Per ulteriori informazioni, consulta la sezione [Campi personalizzati](https://docs.aws.amazon.com/iot/latest/developerguide/managing-fleet-index.html#custom-field) nell'indicizzazione del AWS IoT parco veicoli.

# Preparazione dei lavori AWS IoT
<a name="preparing-jobs-for-service-package-catalog"></a>

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 i seguenti ruoli e politiche AWS Identity and Access Management (IAM): [i diritti AWS IoT Jobs per distribuire le versioni dei pacchetti](https://docs.aws.amazon.com/iot/latest/developerguide/preparing-security.html#job-rights-deploy-versions) e [i diritti AWS IoT Jobs per aggiornare lo shadow denominato riservato](https://docs.aws.amazon.com/iot/latest/developerguide/preparing-security.html#job-rights-update-reserved-named-shadow). Per ulteriori informazioni, consulta [Preparazione della sicurezza](https://docs.aws.amazon.com/iot/latest/developerguide/preparing-security.html).

## Parametri di sostituzione per i lavori AWS IoT
<a name="substitution-parameters"></a>

È 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 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 l'*ARN* della versione dai dettagli della versione del pacchetto. Se stai creando un processo o un modello di processo per una distribuzione a pacchetto singolo utilizzando un comando API o CLI, l'*ARN della versione* per una versione del pacchetto è rappresentato dal `destinationPackageVersions` parametro in and. `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](https://docs.aws.amazon.com/iot/latest/developerguide/create-manage-jobs.html#create-manage-jobs-code-signing). **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 la distribuzione](#preparing-to-deploy)

In Console di gestione AWS, 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 and, è possibile visualizzare la risposta dell'API prima `DescribeJob` e `GetJobDocument` APIs dopo la rimozione dei parametri di sostituzione. 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.](https://docs.aws.amazon.com/iot/latest/developerguide/iot-jobs.html)

## Preparazione del documento del processo e della versione del pacchetto per la distribuzione
<a name="preparing-to-deploy"></a>

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 Console di gestione AWS, è 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 comando API come`CreatePackageVersion`, or `GetPackageVersion``UpdatePackageVersion`, `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, vedere[Concetti di base](key-concepts-jobs.md#basic-concepts-jobs).

  Fate riferimento al seguente esempio per il file di istruzioni di distribuzione rappresentato da`recipe`:

  ```
  {
      "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.

**`Artifact`attributo 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 segnaposto URL 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 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 tuo bucket Amazon S3, devi abilitare il controllo delle versioni sul bucket. Per ulteriori informazioni, consulta [Abilitare](https://docs.aws.amazon.com/AmazonS3/latest/userguide/manage-versioning-examples.html) 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` o l'API, è necessario 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](https://docs.aws.amazon.com/iot/latest/apireference/API_UpdatePackageVersion.html)](https://amazonaws.com/iot/latest/apireference/API_CreatePackageVersion.html)

  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 dai comandi `destinationPackageVersions` for API e CLI e `VersionARN` in. 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 del pacchetto predefinita, utilizzate il `$default` flag nel comando `CreateJob` o `CreateJobTemplate` API 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'[UpdatePackageVersion](https://docs.aws.amazon.com/iot/latest/apireference/API_UpdatePackageVersion.html)operazione API. È quindi possibile fare riferimento alla versione del pacchetto quando si crea il processo tramite la AWS IoT console o emettendo l'operazione [CreateJob](https://docs.aws.amazon.com/iot/latest/apireference/API_CreateJob.html)API.

## Assegnazione di un nome ai pacchetti e alle versioni durante la distribuzione
<a name="naming-package-versions"></a>

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 API. `CreateJob` 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, vedere[Messaggi di errore generali sulla risoluzione dei problemi](software-package-catalog-troubleshooting.md#spc-general-troubleshooting).

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'operazione `CreateJob` API 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 del pacchetto software aggiuntivo. Per ulteriori informazioni sul funzionamento dell'`CreateJob `API, consulta [CreateJob](https://amazonaws.com/iot/latest/apireference/API_CreateJob.html).

## Indirizzazione dei lavori tramite gruppi di AWS IoT oggetti dinamici
<a name="jobs-and-dynamic-groups"></a>

Software Package Catalog funziona con l'[indicizzazione del parco istanze](https://docs.aws.amazon.com/iot/latest/developerguide/iot-indexing.html), i [processi di AWS IoT](https://docs.aws.amazon.com/iot/latest/developerguide/iot-jobs.html) e i [gruppi di oggetti dinamici AWS IoT](https://docs.aws.amazon.com/iot/latest/developerguide/dynamic-thing-groups.html) 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](https://docs.aws.amazon.com/iot/latest/developerguide/dynamic-thing-groups.html#create-dynamic-thing-group).

## Copia shadow con nome riservata e versioni dei pacchetti
<a name="reserved-shadow-and-package-versions"></a>

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 chiamate API 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.

Puoi aggiungere o aggiornare una versione del pacchetto a una copia con nome riservata dell'oggetto (`$package`) tramite la console o l'operazione API [https://docs.aws.amazon.com/iot/latest/apireference/API_iotdata_UpdateThingShadow.html](https://docs.aws.amazon.com/iot/latest/apireference/API_iotdata_UpdateThingShadow.html). Per ulteriori informazioni, vedete [Associare una versione del pacchetto a un oggetto](https://docs.aws.amazon.com/iot/latest/developerguide/associating-package-version.html). AWS IoT 

**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
<a name="uninstalling-packages-and-versions"></a>

`$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](https://docs.aws.amazon.com/iot/latest/developerguide/preparing-to-use-software-package-catalog.html#reserved-named-shadow).

Per utilizzare questa funzionalità, sostituisci il nome della versione alla fine di [destinationPackageVersion](https://docs.aws.amazon.com/iot/latest/apireference/API_CreateJobTemplate.html#iot-CreateJobTemplate-request-destinationPackageVersions)Amazon Resource Name (ARN) con. `$null` Successivamente, devi indicare al 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"]
```

# Nozioni di base su Software Package Catalog
<a name="getting-started-with-software-package-catalog"></a>

È possibile creare e gestire il AWS IoT Device Management Software Package Catalog tramite le Console di gestione AWS operazioni AWS IoT Core API e AWS Command Line Interface (AWS CLI).

**Nota**  
L'abilitazione dell'indicizzazione AWS IoT della flotta è un requisito per utilizzare Software Package Catalog. Le operazioni di base, come la creazione di una versione del pacchetto software nel comando API Console di gestione AWS e l'utilizzo del comando `CreatePackage` API, avranno esito negativo senza l'indicizzazione del AWS IoT parco veicoli abilitata.  
Per ulteriori informazioni sull'utilizzo dell'indicizzazione del AWS IoT parco veicoli con Software Package Catalog, vedere. [Preparazione dell'indicizzazione del parco istanze](preparing-fleet-indexing.md)

**Utilizzo della console**

Per utilizzare il Console di gestione AWS, accedi al tuo AWS account e vai a. [AWS IoT Core](https://console.aws.amazon.com/iot/home) Nel riquadro di navigazione, scegli **Pacchetti software**. Quindi, puoi creare e gestire i pacchetti e le relative versioni da questa sezione.

**Utilizzo delle operazioni API o CLI**

È possibile utilizzare le operazioni AWS IoT Core API per creare e gestire le funzionalità del Software Package Catalog. Per ulteriori informazioni, consulta [AWS IoT API Reference AWS](https://docs.aws.amazon.com/iot/latest/apireference/) [SDKs and Toolkits](https://aws.amazon.com/developer/tools/). I AWS CLI comandi gestiscono anche il tuo catalogo. Per ulteriori informazioni, consulta la pagina di [Riferimento ai comandi CLI AWS IoT](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/index.html).

**Topics**
+ [Creazione di un pacchetto software e di una versione del pacchetto](creating-package-and-version.md)
+ [Distribuzione di una versione del pacchetto tramite job AWS IoT](deploying-package-version.md)
+ [Associare una versione del pacchetto a un oggetto AWS IoT](associating-package-version.md)

# Creazione di un pacchetto software e di una versione del pacchetto
<a name="creating-package-and-version"></a>

Puoi utilizzare i seguenti passaggi per creare un pacchetto e un oggetto della versione iniziale tramite la  Console di gestione AWS.

**Per creare un pacchetto software**

1. Accedi al tuo AWS account e accedi alla [AWS IoT console](https://console.aws.amazon.com/iot/home). 

1.  Nel riquadro di navigazione, scegli **Pacchetti software**. 

1.  Nella pagina del **pacchetto software AWS IoT **, scegli **Crea pacchetto**. Viene visualizzata la finestra di dialogo **Abilita dipendenze per la gestione dei pacchetti**. 

1.  In **Indicizzazione del parco istanze**, seleziona **Aggiungi pacchetti software del dispositivo e versione**. Ciò è richiesto per Software Package Catalog e fornisce l'indicizzazione del parco istanze e i parametri relativi al parco istanze. 

1. [Facoltativo] Se desideri che i AWS IoT job aggiornino lo shadow denominato riservato quando i lavori vengono completati correttamente, seleziona **Aggiorna automaticamente le ombre dai lavori**. Se non desideri che i AWS IoT lavori effettuino questo aggiornamento, lascia questa casella di controllo deselezionata.

1.  [Facoltativo] Per concedere ai AWS IoT lavori il diritto di aggiornare l'ombra denominata riservata, in **Seleziona ruolo**, scegli **Crea** ruolo. Se non desideri che i AWS IoT lavori effettuino questo aggiornamento, questo ruolo non è obbligatorio. 

1. Crea o seleziona un ruolo.

   1. Se **non disponi di un ruolo** per questo scopo: quando viene visualizzata la finestra di dialogo **Crea ruolo**, inserisci un **Nome di ruolo**, quindi scegli **Crea**.

   1. Se **disponi di un ruolo** per questo scopo: in **Seleziona ruolo**, scegli il ruolo, quindi assicurati che la casella di controllo **Collega policy al ruolo IAM** sia selezionata.

1. Scegli **Conferma**. Viene visualizzata la pagina **Crea nuovo pacchetto**.

1. In **Dettagli del pacchetto**, inserisci un **Nome del pacchetto**.

1. In **Descrizione pacchetto**, inserisci le informazioni per facilitare l'identificazione e la gestione di questo pacchetto.

1. [Facoltativo] Puoi usare i tag per facilitare la classificazione e la gestione di questo pacchetto. Per aggiungere tag, espandi **Tag**, scegli **Aggiungi tag** e inserisci una coppia chiave-valore. Puoi inserire fino a 50 tag. Per ulteriori informazioni, consulta [Taggare le AWS IoT risorse](https://docs.aws.amazon.com/iot/latest/developerguide/tagging-iot.html).

**Per aggiungere una versione del pacchetto durante la creazione di un nuovo pacchetto**

1. In **Versione iniziale**, inserisci un **nome per la versione**.

   Ti consigliamo di utilizzare il [SemVer formato](https://semver.org/) (ad esempio,`1.0.0.0`) per identificare in modo univoco la versione del pacchetto. Puoi anche utilizzare una strategia di formattazione diversa più appropriata per il tuo caso d'uso. Per ulteriori informazioni, consulta [Ciclo di vita della versione del pacchetto](preparing-to-use-software-package-catalog.md#package-version-lifecycle). 

1. In **Descrizione versione**, inserisci le informazioni per facilitare l'identificazione e la gestione di questa versione del pacchetto.
**Nota**  
La casella di controllo **Versione predefinita** è disattivata perché le versioni dei pacchetti vengono create in uno stato `draft`. È possibile assegnare un nome alla versione predefinita dopo aver creato la versione del pacchetto e quando si modifica lo stato in`published`. Per ulteriori informazioni, consulta [Ciclo di vita della versione del pacchetto](preparing-to-use-software-package-catalog.md#package-version-lifecycle).

1. [Facoltativo] Per semplificare la gestione di questa versione o per comunicare informazioni ai dispositivi, inserisci una o più coppie nome-valore per **Attributi di versione**. Scegli **Aggiungi attributo** per ciascuna coppia nome-valore inserita. Per ulteriori informazioni, consulta [Attributi della versione](preparing-to-use-software-package-catalog.md#version-attributes).

1. [Facoltativo] Puoi usare i tag per facilitare la classificazione e la gestione di questo pacchetto. Per aggiungere tag, espandi **Tag**, scegli **Aggiungi tag** e inserisci una coppia chiave-valore. Puoi inserire fino a 50 tag. Per ulteriori informazioni, consulta [Taggare le AWS IoT risorse](https://docs.aws.amazon.com/iot/latest/developerguide/tagging-iot.html).

1. Scegli **Next (Successivo)**.

**Associare la distinta base del software a una versione del pacchetto (opzionale)**

1. Al **Passaggio 3: Versione SBOMs (opzionale)** nella finestra **delle configurazioni SBOM**, scegliete il formato di file SBOM predefinito e la modalità di convalida utilizzati per convalidare la distinta base del software prima che venga associata alla versione del pacchetto.

1. Nella finestra **Aggiungi file SBOM**, inserisci l'Amazon Resource Name (ARN) che rappresenta la tua versione del bucket Amazon S3 e il formato di file SBOM preferito se il tipo predefinito non funziona.
**Nota**  
Puoi aggiungere un singolo file SBOM o un singolo file zip contenente più SBOMs di una distinta software per la versione del pacchetto. 

1. Nella finestra **Aggiunto file SBOM**, è possibile visualizzare il file SBOM aggiunto per la versione del pacchetto.

1. Scegli **Crea** pacchetto e versione. Viene visualizzata la pagina della versione del pacchetto e puoi vedere lo stato di convalida del tuo file SBOM nella finestra Aggiungi file **SBOM**. Lo stato iniziale sarà quello in cui il file SBOM viene `In progress` sottoposto a convalida. 
**Nota**  
Gli stati di convalida del file SBOM sono`Invalid file`,,,`Not started`, `In progress` e i motivi dell'errore di convalida. `Validated (SPDX)` `Validated (CycloneDX)`

# Distribuzione di una versione del pacchetto tramite job AWS IoT
<a name="deploying-package-version"></a>

Puoi utilizzare la procedura seguente per distribuire una versione del pacchetto tramite la  Console di gestione AWS.

**Prerequisiti:**

Prima di iniziare, esegui queste attività:
+ Registra AWS IoT le cose con AWS IoT Core. Per indicazioni su come aggiungere i dispositivi AWS IoT Core, consulta [Creare un oggetto](https://docs.aws.amazon.com/iot/latest/developerguide/create-iot-resources.html#create-aws-thing).
+ [Facoltativo] Crea un AWS IoT gruppo di oggetti o un gruppo di oggetti dinamico per indirizzare i dispositivi su cui distribuirai la versione del pacchetto. Per istruzioni su come creare un gruppo di oggetti, consulta [Creazione di un gruppo di oggetti statico](https://docs.aws.amazon.com/iot/latest/developerguide/thing-groups.html#create-thing-group). Per istruzioni su come creare un gruppo di oggetti dinamico, consulta [Creazione di un gruppo di oggetti dinamico](https://docs.aws.amazon.com/iot/latest/developerguide/dynamic-thing-groups.html#create-dynamic-thing-group).
+ Crea un pacchetto software e una versione del pacchetto. Per ulteriori informazioni, consulta [Creazione di un pacchetto software e di una versione del pacchetto](creating-package-and-version.md).
+ Crea un documento del processo. Per ulteriori informazioni, consulta [Preparazione del documento del processo e della versione del pacchetto per l'implementazione](https://docs.aws.amazon.com/iot/latest/developerguide/preparing-jobs-for-service-package-catalog.html#preparing-to-deploy).

**Per distribuire un lavoro AWS IoT**

1. Sulla [console AWS IoT](https://console.aws.amazon.com/iot/home), scegli **Pacchetti software**.

1. Scegli il pacchetto software che desideri distribuire. Viene visualizzata la pagina dei **dettagli del pacchetto software**.

1. Scegli la versione del pacchetto che desideri distribuire, in **Versioni**, e scegli **Distribuisci versione del processo.**

1. Se è la prima volta che distribuisci un processo tramite questo portale, viene visualizzata una finestra di dialogo che descrive i requisiti. Rivedi le informazioni e scegli **Accetta**.

1. Inserisci un nome per l'implementazione o lascia il nome generato automaticamente nel campo **Nome**.

1. [Facoltativo] Nel campo **Descrizione**, inserisci una descrizione che identifica lo scopo o i contenuti dell'implementazione o lascia le informazioni generate automaticamente. 

   **Nota:** si consiglia di non utilizzare informazioni personali di identificazione nel nome del processo e nei campi di descrizione.

1. [Facoltativo] Aggiungi eventuali tag da associare a questo processo.

1. Scegli **Next (Successivo)**.

1. In **Destinazioni del processo**, scegli gli oggetti o i gruppi di oggetti che devono ricevere il processo.

1. Nel campo **File del processo**, specifica il file JSON del documento del processo.

1. Apri **Integrazione dei processi con il servizio Package Catalog**.

1. Seleziona i pacchetti e le versioni specificati all'interno del documento del processo.
**Nota**  
Ti viene richiesto di scegliere gli stessi pacchetti e le stesse versioni dei pacchetti specificati nel documento del processo. Puoi includerne altri, ma il processo fornirà istruzioni solo per i pacchetti e le versioni inclusi nel documento del processo. Per ulteriori informazioni, consulta [Denominazione di pacchetti e versioni durante l'implementazione](https://docs.aws.amazon.com/iot/latest/developerguide/preparing-jobs-for-service-package-catalog.html#naming-package-versions).

1. Scegli **Next (Successivo)**.

1. Nella pagina Configurazione del processo, seleziona uno dei seguenti tipi di processo nella finestra di dialogo Configurazione del processo:
   + **Snapshot job** (Processo snapshot): un processo snapshot viene completato quando termina la sua esecuzione su dispositivi e gruppi di destinazione.
   + **Continuous job** (Processo continuo): un processo continuo si applica ai gruppi di oggetti e viene eseguito su qualsiasi dispositivo aggiunto successivamente a un gruppo di destinazione specificato.

1. Nella finestra di dialogo **Configurazioni aggiuntive - opzionale**, esamina le seguenti configurazioni del processo opzionali ed esegui le selezioni di conseguenza. Per ulteriori informazioni, consulta [Configurazioni di rollout, pianificazione e interruzione dei processi](https://docs.aws.amazon.com/iot/latest/developerguide/jobs-configurations-details.html#job-rollout-abort-scheduling) e [Configurazioni di timeout e di nuovo tentativo di esecuzione del processo](https://docs.aws.amazon.com/iot/latest/developerguide/jobs-configurations-details.html#job-timeout-retry).
   + Rollout configuration (Configurazione rollout)
   + Scheduling configuration (Configurazione della pianificazione)
   + Job executions timeout configuration (Configurazione del timeout di esecuzioni dei processi)
   + Configurazione dei tentativi delle esecuzioni dei processi
   + Configurazione dell’interruzione

1. Esamina le selezioni del processo e scegli **Invia**.

Dopo aver creato il processo, la console genera una firma JSON e la inserisce nel documento di processo. È possibile utilizzare la AWS IoT console per visualizzare lo stato di un lavoro oppure annullarlo o eliminarlo. Per gestire i processi, vai all'[Hub di processo della console](https://console.aws.amazon.com/iot/home#/jobhub).

# Associare una versione del pacchetto a un oggetto AWS IoT
<a name="associating-package-version"></a>

Dopo aver installato il software sul dispositivo, è possibile associare una versione del pacchetto a un AWS IoT oggetto denominato shadow riservato. Se i AWS IoT job sono stati configurati per aggiornare il named shadow riservato dell'oggetto dopo che il job è stato distribuito e completato con successo, non è necessario completare questa procedura. Per ulteriori informazioni, consulta [Copia shadow con nome riservata](preparing-to-use-software-package-catalog.md#reserved-named-shadow). 

**Prerequisiti:**

Prima di iniziare, esegui queste attività:
+ Crea una o AWS IoT più cose e stabilisci la telemetria tramite. AWS IoT Core Per ulteriori informazioni, consulta [Guida introduttiva](https://docs.aws.amazon.com/iot/latest/developerguide/iot-gs.html). AWS IoT Core
+  Crea un pacchetto software e una versione del pacchetto. Per ulteriori informazioni, consulta [Creazione di un pacchetto software e di una versione del pacchetto](creating-package-and-version.md). 
+  Installa il software della versione del pacchetto sul dispositivo. 

**Nota**  
L'associazione di una versione del pacchetto a un AWS IoT elemento non comporta l'aggiornamento o l'installazione del software sul dispositivo fisico. La versione del pacchetto deve essere distribuita sul dispositivo. 

**Associare una versione del pacchetto a un oggetto AWS IoT**

1. Nel riquadro di navigazione della [console AWS IoT](https://console.aws.amazon.com/iot/home), espandi il menu **Tutti i dispositivi** e scegli **Oggetti**.

1. Identifica l' AWS IoT elemento che desideri aggiornare dall'elenco e scegli il nome dell'oggetto per visualizzarne la pagina dei dettagli.

1. Nella sezione **Dettagli**, scegli **Pacchetti e versioni**.

1.  Scegli **Aggiungi al pacchetto e alla versione**. 

1.  In **Scegli un pacchetto di dispositivi**, seleziona il pacchetto software desiderato. 

1.  In **Scegli una versione**, seleziona la versione del software desiderata. 

1.  Scegli **Aggiungi pacchetto di dispositivi**. 

    Il pacchetto e la versione vengono visualizzati nell'elenco **Pacchetti e versioni selezionate**. 

1.  Ripeti questi passaggi per ogni pacchetto e versione che desideri associare a questo oggetto. 

1.  Al termine, scegli **Aggiungi pacchetto e dettagli della versione**. Viene visualizzata la pagina **Dettagli dell'oggetto** in cui è possibile visualizzare il nuovo pacchetto e la nuova versione nell'elenco. 