

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

# 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
   ```