

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

# Provisioning dei dispositivi che dispongono di certificati dispositivo
<a name="provision-w-cert"></a>

AWS IoT fornisce tre modi per effettuare il provisioning dei dispositivi quando dispongono già di un certificato del dispositivo (e di una chiave privata associata):
+ Il provisioning Single-thing con un modello di provisioning. Questa è una buona opzione se è sufficiente effettuare il provisioning di dispositivi uno alla volta.
+ Just-in-time provisioning (JITP) con un modello che effettua il provisioning di un dispositivo alla prima connessione. AWS IoT Questa è una buona opzione se è necessario registrare un numero elevato di dispositivi, ma non si dispone di informazioni da assemblare in un elenco di provisioning in blocco.
+ Registrazione in blocco Questa opzione consente di specificare un elenco di valori di modelli di provisioning single-thing memorizzati in un file in un bucket S3. Questo approccio è ideale se si dispone di un numero elevato di dispositivi noti le cui caratteristiche desiderate possono essere assemblate in un elenco. 

**Topics**
+ [Provisioning di un singolo oggetto](single-thing-provisioning.md)
+ [Just-in-time approvvigionamento](jit-provisioning.md)
+ [Registrazione in blocco](bulk-provisioning.md)

# Provisioning di un singolo oggetto
<a name="single-thing-provisioning"></a>

Per effettuare il provisioning di un oggetto, usa l'[RegisterThing](https://docs.aws.amazon.com/iot/latest/apireference/API_RegisterThing.html)API o il `register-thing` comando CLI. Il comando `register-thing` dell'interfaccia a riga di comando accetta gli argomenti seguenti:

--template-body  
Modello di provisioning.

--parameters  
Elenco di coppie nome-valore per i parametri usati nel modello di provisioning, in formato JSON, ad esempio `{"ThingName" : "MyProvisionedThing", "CSR" : "csr-text"}`.

Per informazioni, consulta [Modelli di provisioning](provision-template.md).

[RegisterThing](https://docs.aws.amazon.com/iot/latest/apireference/API_RegisterThing.html)o `register-thing` restituisce ARNs le risorse e il testo del certificato che ha creato:

```
{
    "certificatePem": "certificate-text",
    "resourceArns": {
    "PolicyLogicalName": "arn:aws:iot:us-west-2:123456789012:policy/2A6577675B7CD1823E271C7AAD8184F44630FFD7",
    "certificate": "arn:aws:iot:us-west-2:123456789012:cert/cd82bb924d4c6ccbb14986dcb4f40f30d892cc6b3ce7ad5008ed6542eea2b049",
    "thing": "arn:aws:iot:us-west-2:123456789012:thing/MyProvisionedThing"
    }
}
```

Se un parametro viene omesso dal dizionario, viene usato il valore predefinito. Se non è specificato alcun valore predefinito, il parametro non viene sostituito con un valore.

# Just-in-time approvvigionamento
<a name="jit-provisioning"></a>

È possibile utilizzare il just-in-time provisioning (JITP) per effettuare il provisioning dei dispositivi al primo tentativo di connessione. AWS IoT Per eseguire il provisioning del dispositivo, devi abilitare la registrazione automatica e associare un modello di provisioning al certificato CA usato per firmare il certificato del dispositivo. I successi e gli errori di provisioning vengono registrati come in [Parametri di provisioning dei dispositivi](metrics_dimensions.md#provisioning-metrics) Amazon. CloudWatch

**Topics**
+ [Panoramica di JITP](#jit-provisioning-overview)
+ [Registrare la CA utilizzando il modello di provisioning](#jit-provisioning-registerCA-template)
+ [Registrare una CA utilizzando il nome del modello di provisioning](#jit-provisioning-registerCA-templateName)

## Panoramica di JITP
<a name="jit-provisioning-overview"></a>

Quando un dispositivo tenta di connettersi AWS IoT utilizzando un certificato firmato da un certificato CA registrato, AWS IoT carica il modello dal certificato CA e lo utilizza per chiamare. [RegisterThing](fleet-provision-api.md#register-thing) Il flusso di lavoro JITP prima registra un certificato con un valore di stato `PENDING_ACTIVATION`. Quando il flusso di provisioning del dispositivo è completo, lo stato del certificato viene modificato in `ACTIVE`.

AWS IoT definisce i seguenti parametri a cui è possibile dichiarare e fare riferimento nei modelli di provisioning:
+ `AWS::IoT::Certificate::Country`
+ `AWS::IoT::Certificate::Organization`
+ `AWS::IoT::Certificate::OrganizationalUnit`
+ `AWS::IoT::Certificate::DistinguishedNameQualifier`
+ `AWS::IoT::Certificate::StateName`
+ `AWS::IoT::Certificate::CommonName`
+ `AWS::IoT::Certificate::SerialNumber`
+ `AWS::IoT::Certificate::Id`

I valori per questi parametri del modello di provisioning sono limitati a ciò che JITP può estrarre dal campo oggetto del certificato del dispositivo di cui viene effettuato il provisioning. Il certificato deve contenere valori per tutti i parametri nel corpo del modello. Il parametro `AWS::IoT::Certificate::Id` si riferisce a un ID generato internamente, non a un ID contenuto nel certificato. È possibile ottenere il valore di questo ID utilizzando la `principal()` funzione all'interno di una AWS IoT regola. 

**Nota**  
È possibile effettuare il AWS IoT Core just-in-time provisioning dei dispositivi utilizzando la funzionalità di provisioning (JITP) senza dover inviare l'intera catena di fiducia alla prima connessione di un dispositivo a. AWS IoT Core La presentazione del certificato emesso da una CA è facoltativa, ma il dispositivo deve inviare l'estensione [Server Name Indication (SNI)](https://datatracker.ietf.org/doc/html/rfc3546#section-3.1) quando si collega a AWS IoT Core.

### Modello di corpo di esempio
<a name="jit-provisioning-example-templatebody"></a>

Il seguente file JSON è un esempio di modello di corpo completo di un modello JITP. 

```
{
   "Parameters":{
      "AWS::IoT::Certificate::CommonName":{
         "Type":"String"
      },
      "AWS::IoT::Certificate::SerialNumber":{
         "Type":"String"
      },
      "AWS::IoT::Certificate::Country":{
         "Type":"String"
      },
      "AWS::IoT::Certificate::Id":{
         "Type":"String"
      }
   },
   "Resources":{
      "thing":{
         "Type":"AWS::IoT::Thing",
         "Properties":{
            "ThingName":{
               "Ref":"AWS::IoT::Certificate::CommonName"
            },
            "AttributePayload":{
               "version":"v1",
               "serialNumber":{
                  "Ref":"AWS::IoT::Certificate::SerialNumber"
               }
            },
            "ThingTypeName":"lightBulb-versionA",
            "ThingGroups":[
               "v1-lightbulbs",
               {
                  "Ref":"AWS::IoT::Certificate::Country"
               }
            ]
         },
         "OverrideSettings":{
            "AttributePayload":"MERGE",
            "ThingTypeName":"REPLACE",
            "ThingGroups":"DO_NOTHING"
         }
      },
      "certificate":{
         "Type":"AWS::IoT::Certificate",
         "Properties":{
            "CertificateId":{
               "Ref":"AWS::IoT::Certificate::Id"
            },
            "Status":"ACTIVE"
         }
      },
      "policy":{
         "Type":"AWS::IoT::Policy",
         "Properties":{
            "PolicyDocument":"{ \"Version\": \"2012-10-17\",		 	 	  \"Statement\": [{ \"Effect\": \"Allow\", \"Action\":[\"iot:Publish\"], \"Resource\": [\"arn:aws:iot:us-east-1:123456789012:topic/foo/bar\"] }] }"
         }
      }
   }
}
```

Questo modello di esempio dichiara i valori per i parametri di provisioning `AWS::IoT::Certificate::CommonName`, `AWS::IoT::Certificate::SerialNumber`, `AWS::IoT::Certificate::Country` e `AWS::IoT::Certificate::Id` che vengono estratti dal certificato e utilizzati nella sezione `Resources`. Il flusso di lavoro JITP usa quindi questo modello per eseguire le seguenti operazioni:
+ Registrare un certificato e impostare il relativo stato su PENDING\$1ACTIVE.
+ Creare una risorsa oggetto.
+ Creare una risorsa policy.
+ Collegare la policy al certificato.
+ Collegare il certificato all'oggetto.
+ Aggiornare lo stato del certificato ad ACTIVE.

Il provisioning del dispositivo fallisce se il certificato non ha tutte le proprietà menzionate nella sezione del`Parameters`. `templateBody` Ad esempio, se `AWS::IoT::Certificate::Country` è incluso nel modello, ma il certificato non ha una proprietà `Country`, il provisioning del dispositivo non riesce.

Puoi anche usarlo CloudTrail per risolvere problemi con il tuo modello JITP. Per informazioni sulle metriche registrate in Amazon CloudWatch, consulta. [Parametri di provisioning dei dispositivi](metrics_dimensions.md#provisioning-metrics) Per ulteriori informazioni sui modelli di provisioning, consulta [Modelli di provisioning](provision-template.md).

**Nota**  
Durante il processo di provisioning, il just-in-time provisioning (JITP) richiama altre operazioni API del piano di controllo. AWS IoT Queste chiamate potrebbero superare le [quote di throttling AWS IoT](https://docs.aws.amazon.com/general/latest/gr/iot-core.html#throttling-limits) impostate per il tuo account e causare limitazioni delle chiamate. Se necessario, contatta il [supporto clienti AWS](https://console.aws.amazon.com/support/home) per aumentare le quote di limitazione.

## Registrare la CA utilizzando il modello di provisioning
<a name="jit-provisioning-registerCA-template"></a>

Per registrare una CA utilizzando un modello di provisioning completo, attieniti alla seguente procedura: 

1. Salva il modello di provisioning e le informazioni ARN del ruolo sotto forma di file JSON come nell'esempio seguente:

   ```
   { 
        "templateBody" : "{\r\n    \"Parameters\" : {\r\n        \"AWS::IoT::Certificate::CommonName\": {\r\n            \"Type\": \"String\"\r\n        },\r\n        \"AWS::IoT::Certificate::SerialNumber\": {\r\n            \"Type\": \"String\"\r\n        },\r\n        \"AWS::IoT::Certificate::Country\": {\r\n            \"Type\": \"String\"\r\n        },\r\n        \"AWS::IoT::Certificate::Id\": {\r\n            \"Type\": \"String\"\r\n        }\r\n    },\r\n    \"Resources\": {\r\n        \"thing\": {\r\n            \"Type\": \"AWS::IoT::Thing\",\r\n            \"Properties\": {\r\n                \"ThingName\": {\r\n                    \"Ref\": \"AWS::IoT::Certificate::CommonName\"\r\n                },\r\n                \"AttributePayload\": {\r\n                    \"version\": \"v1\",\r\n                    \"serialNumber\": {\r\n                        \"Ref\": \"AWS::IoT::Certificate::SerialNumber\"\r\n                    }\r\n                },\r\n                \"ThingTypeName\": \"lightBulb-versionA\",\r\n                \"ThingGroups\": [\r\n                    \"v1-lightbulbs\",\r\n                    {\r\n                        \"Ref\": \"AWS::IoT::Certificate::Country\"\r\n                    }\r\n                ]\r\n            },\r\n            \"OverrideSettings\": {\r\n                \"AttributePayload\": \"MERGE\",\r\n                \"ThingTypeName\": \"REPLACE\",\r\n                \"ThingGroups\": \"DO_NOTHING\"\r\n            }\r\n        },\r\n        \"certificate\": {\r\n            \"Type\": \"AWS::IoT::Certificate\",\r\n            \"Properties\": {\r\n                \"CertificateId\": {\r\n                    \"Ref\": \"AWS::IoT::Certificate::Id\"\r\n                },\r\n                \"Status\": \"ACTIVE\"\r\n            },\r\n            \"OverrideSettings\": {\r\n                \"Status\": \"DO_NOTHING\"\r\n            }\r\n        },\r\n        \"policy\": {\r\n            \"Type\": \"AWS::IoT::Policy\",\r\n            \"Properties\": {\r\n                \"PolicyDocument\": \"{ \\\"Version\\\": \\\"2012-10-17		 	 	 \\\", \\\"Statement\\\": [{ \\\"Effect\\\": \\\"Allow\\\", \\\"Action\\\":[\\\"iot:Publish\\\"], \\\"Resource\\\": [\\\"arn:aws:iot:us-east-1:123456789012:topic\/foo\/bar\\\"] }] }\"\r\n            }\r\n        }\r\n    }\r\n}",
        "roleArn" : "arn:aws:iam::123456789012:role/JITPRole"
   }
   ```

   Il valore del campo `templateBody` deve essere un oggetto JSON specificato come stringa con caratteri di escape e può utilizzare solo i valori dell'[elenco precedente](#jit-provisioning-overview). È possibile utilizzare una varietà di strumenti per creare l'output JSON richiesto, ad esempio `json.dumps` (Python) o `JSON.stringify` (Node). Il valore del campo `roleARN` deve essere l'ARN di un ruolo a cui è associata `AWSIoTThingsRegistration`. Inoltre, il modello può utilizzare un `PolicyName` esistente invece di `PolicyDocument` inline nell'esempio. 

1. Registra un certificato CA con l'operazione [Register CACertificate](https://docs.aws.amazon.com/iot/latest/apireference/API_RegisterCACertificate.html) API o il comando [https://docs.aws.amazon.com//cli/latest/reference/iot/register-ca-certificate.html](https://docs.aws.amazon.com//cli/latest/reference/iot/register-ca-certificate.html)CLI. Specificherai la cartella del modello di provisioning e le informazioni ARN sui ruoli salvate nel passaggio precedente:

   Di seguito viene illustrato un esempio di come registrare un certificato CA in modalità `DEFAULT` utilizzando la AWS CLI:

   ```
   aws iot register-ca-certificate --ca-certificate file://your-ca-cert --verification-cert file://your-verification-cert 
                   --set-as-active --allow-auto-registration --registration-config file://your-template
   ```

   Di seguito viene illustrato un esempio di come registrare un certificato CA in modalità `SNI_ONLY` utilizzando la AWS CLI:

   ```
   aws iot register-ca-certificate --ca-certificate file://your-ca-cert --certificate-mode SNI_ONLY
                    --set-as-active --allow-auto-registration --registration-config file://your-template
   ```

   Per ulteriori informazioni, consulta [Registrazione di certificati CA](https://docs.aws.amazon.com//iot/latest/developerguide/register-CA-cert.html).

1.  (Facoltativo) Aggiorna le impostazioni per un certificato CA utilizzando l'operazione [Update CACertificate](https://docs.aws.amazon.com/iot/latest/apireference/API_UpdateCACertificate.html) API o il comando [https://docs.aws.amazon.com//cli/latest/reference/iot/update-ca-certificate.html](https://docs.aws.amazon.com//cli/latest/reference/iot/update-ca-certificate.html)CLI. 

   Di seguito viene illustrato un esempio di come aggiornare un certificato CA utilizzando la AWS CLI:

   ```
   aws iot update-ca-certificate --certificate-id caCertificateId
                   --new-auto-registration-status ENABLE --registration-config file://your-template
   ```

## Registrare una CA utilizzando il nome del modello di provisioning
<a name="jit-provisioning-registerCA-templateName"></a>

Per registrare una CA utilizzando il nome di un modello di provisioning, attieniti alla seguente procedura:

1. Salva il corpo del modello di provisioning sotto forma di file JSON. Puoi trovare un esempio di corpo del modello in [esempio di corpo del modello](#jit-provisioning-example-templatebody).

1. Per creare un modello di provisioning, usa l'[CreateProvisioningTemplate](https://docs.aws.amazon.com/iot/latest/apireference/API_CreateProvisioningTemplate.html)API o il comando [https://docs.aws.amazon.com//cli/latest/reference/iot/create-provisioning-template.html](https://docs.aws.amazon.com//cli/latest/reference/iot/create-provisioning-template.html)CLI:

   ```
   aws iot create-provisioning-template --template-name your-template-name \
           --template-body file://your-template-body.json --type JITP \
           --provisioning-role-arn arn:aws:iam::123456789012:role/test
   ```
**Nota**  
Per il just-in-time provisioning (JITP), è necessario specificare il tipo di modello da utilizzare al `JITP` momento della creazione del modello di provisioning. *Per ulteriori informazioni sul tipo di modello, consulta [CreateProvisioningTemplate](https://docs.aws.amazon.com/iot/latest/apireference/API_CreateProvisioningTemplate.html)l'API Reference.AWS *

1. Per registrare CA con il nome del modello, utilizza l'CACertificateAPI [Register](https://docs.aws.amazon.com/iot/latest/apireference/API_RegisterCACertificate.html) o il [https://docs.aws.amazon.com//cli/latest/reference/iot/register-ca-certificate.html](https://docs.aws.amazon.com//cli/latest/reference/iot/register-ca-certificate.html)comando CLI:

   ```
   aws iot register-ca-certificate --ca-certificate file://your-ca-cert --verification-cert file://your-verification-cert \
           --set-as-active --allow-auto-registration --registration-config templateName=your-template-name
   ```

# Registrazione in blocco
<a name="bulk-provisioning"></a>

Puoi usare il comando [https://docs.aws.amazon.com/iot/latest/apireference/API_StartThingRegistrationTask.html](https://docs.aws.amazon.com/iot/latest/apireference/API_StartThingRegistrationTask.html) per registrare gli oggetti in blocco. Questo comando accetta un modello di provisioning, un nome di bucket S3, un nome di chiave e l'ARN di un ruolo che permette di accedere al file nel bucket S3. Il file nel bucket S3 contiene i valori usati per sostituire i parametri nel modello. Il file deve essere un file JSON delimitato da righe. Ogni riga contiene tutti i valori dei parametri per la registrazione di un singolo dispositivo. Ad esempio:

```
{"ThingName": "foo", "SerialNumber": "123", "CSR": "csr1"}
{"ThingName": "bar", "SerialNumber": "456", "CSR": "csr2"}
```

Le seguenti API relative alle operazioni di registrazione in blocco potrebbero essere utili:
+ [ListThingRegistrationTasks](https://docs.aws.amazon.com/iot/latest/apireference/API_ListThingRegistrationTasks.html): elenca le attività correnti di bulk thing provisioning. 
+ [ DescribeThingRegistrationTask](https://docs.aws.amazon.com/iot/latest/apireference/API_DescribeThingRegistrationTask.html): fornisce informazioni su una specifica attività di registrazione di oggetti in blocco.
+ [StopThingRegistrationTask](https://docs.aws.amazon.com/iot/latest/apireference/API_StopThingRegistrationTask.html): interrompe un'attività di registrazione di oggetti in blocco.
+ [ListThingRegistrationTaskReports](https://docs.aws.amazon.com/iot/latest/apireference/API_ListThingRegistrationTaskReports.html): Utilizzato per controllare i risultati e gli errori di un'attività di registrazione di oggetti in blocco.

**Nota**  
Puoi eseguire una sola attività di registrazione in blocco per volta (per account).
Le operazioni di registrazione in blocco richiamano altre operazioni API AWS IoT del piano di controllo. Queste chiamate potrebbero superare le [Quote di throttling AWS IoT](https://docs.aws.amazon.com/general/latest/gr/iot-core.html#throttling-limits) del tuo account e causare errori di limitazione delle chiamate. Contatta l'[assistenza AWS clienti](https://console.aws.amazon.com/support/home) per aumentare le quote di AWS IoT limitazione, se necessario.