

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Just-in-time approvisionnement


Vous pouvez utiliser le just-in-time provisionnement (JITP) pour approvisionner vos appareils lors de leur première tentative de connexion. AWS IoT Pour mettre en service l'appareil, vous devez activer l'enregistrement automatique et associer un modèle de mise en service au certificat CA utilisé pour signer le certificat d'appareil. Les réussites et les erreurs de provisionnement sont enregistrées comme [Métriques de mise en service d'appareils](metrics_dimensions.md#provisioning-metrics) sur Amazon CloudWatch.

**Topics**
+ [

## Présentation du JITP
](#jit-provisioning-overview)
+ [

## Enregistrer CA à l’aide d’un modèle de mise en service
](#jit-provisioning-registerCA-template)
+ [

## Enregistrer CA à l’aide d’un nom de modèle de mise en service
](#jit-provisioning-registerCA-templateName)

## Présentation du JITP


Lorsqu'un appareil tente de se connecter à AWS IoT l'aide d'un certificat signé par un certificat CA enregistré, AWS IoT charge le modèle à partir du certificat CA et l'utilise pour appeler [RegisterThing](fleet-provision-api.md#register-thing). Le flux de travail de mise en service JITP enregistre d’abord un certificat avec une valeur de statut `PENDING_ACTIVATION`. Lorsque le flux de mise en service d’appareil est terminé, le statut du certificat est modifié en `ACTIVE`.

AWS IoT définit les paramètres suivants que vous pouvez déclarer et référencer dans les modèles de provisionnement :
+ `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`

Les valeurs de ces paramètres de modèle de mise en service sont limitées à ce que la mise en service JITP peut extraire du champ d'objet du certificat de l'appareil qui est mis en service. Le certificat doit contenir des valeurs pour tous les paramètres du corps du modèle. Le paramètre `AWS::IoT::Certificate::Id` fait référence à un ID généré en interne, et non un ID qui est contenu dans le certificat. Vous pouvez obtenir la valeur de cet ID à l'aide de la `principal()` fonction intégrée à une AWS IoT règle. 

**Note**  
Vous pouvez approvisionner des appareils à l'aide de la fonction de AWS IoT Core just-in-time provisionnement (JITP) sans avoir à envoyer l'intégralité de la chaîne de confiance lors de la première connexion d'un appareil à. AWS IoT Core La présentation du certificat CA est facultative, mais l’appareil doit envoyer l’extension [SNI (Indication du nom du serveur)](https://datatracker.ietf.org/doc/html/rfc3546#section-3.1) lorsqu’il se connecte à AWS IoT Core.

### Exemple de corps de modèle


Le fichier JSON suivant est un exemple de corps de modèle d’un modèle JITP complet. 

```
{
   "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\"] }] }"
         }
      }
   }
}
```

Cet exemple de modèle déclare des valeurs pour les paramètres de mise en service `AWS::IoT::Certificate::CommonName`, `AWS::IoT::Certificate::SerialNumber`, `AWS::IoT::Certificate::Country` et `AWS::IoT::Certificate::Id` qui sont extraits du certificat et utilisés dans la section `Resources`. Le flux de travail JITP utilise ensuite ce modèle pour effectuer les actions suivantes :
+ Enregistrer un certificat et définir son état sur PENDING\$1ACTIVE.
+ Créer une ressource d'objet.
+ Créer une ressource de stratégie.
+ Attacher la stratégie au certificat.
+ Attacher le certificat à l'objet.
+ Mettre à jour le statut du certificat en ACTIVE.

Le provisionnement de l'appareil échoue si le certificat ne possède pas toutes les propriétés mentionnées dans la `Parameters` section du`templateBody`. Par exemple, s’il `AWS::IoT::Certificate::Country` est inclus dans le modèle, mais que le certificat ne possède aucune propriété `Country`, la mise en service de l’appareil échoue.

Vous pouvez également l'utiliser CloudTrail pour résoudre les problèmes liés à votre modèle JITP. Pour plus d'informations sur les métriques enregistrées sur Amazon CloudWatch, consultez[Métriques de mise en service d'appareils](metrics_dimensions.md#provisioning-metrics). Pour plus d’informations sur les modèles de mise en service, voir [Modèles de mise en service](provision-template.md).

**Note**  
Au cours du processus de provisionnement, le just-in-time provisionnement (JITP) appelle d'autres opérations d'API du plan AWS IoT de contrôle. Ces appels peuvent dépasser les [AWS IoT quotas de limitation](https://docs.aws.amazon.com/general/latest/gr/iot-core.html#throttling-limits) définis pour votre compte et entraîner des appels limités. Veuillez contacter le [AWS service clientèle](https://console.aws.amazon.com/support/home) pour augmenter vos quotas de limitation, si nécessaire.

## Enregistrer CA à l’aide d’un modèle de mise en service


Pour enregistrer une autorité de certification à l’aide d’un modèle de mise en service complet, procédez comme suit : 

1. Enregistrez votre modèle de mise en service et les informations ARN du rôle, comme dans l’exemple suivant, sous forme de fichier JSON :

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

   Dans cet exemple, la valeur du champ `templateBody` doit être un objet JSON spécifié comme une chaîne échappée et ne peut utiliser que les valeurs de la [liste précédente](#jit-provisioning-overview). Vous pouvez utiliser différents outils pour créer l'objet JSON requis, par exemple `json.dumps` (Python) ou `JSON.stringify` (Node). La valeur du champ `roleARN` doit être l'ARN d'un rôle qui est le `AWSIoTThingsRegistration` attaché à celui-ci. De plus, votre modèle peut utiliser un `PolicyName` au lieu du `PolicyDocument` en ligne dans l'exemple. 

1. Enregistrez un certificat CA à l'aide de l'opération [Register CACertificate](https://docs.aws.amazon.com/iot/latest/apireference/API_RegisterCACertificate.html) API ou de la commande [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. Vous allez spécifier le répertoire du modèle de mise en service et les informations ARN du rôle que vous avez enregistrées à l’étape précédente :

   L’exemple suivant montre comment enregistrer un certificat CA en mode `DEFAULT` à l’aide du 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
   ```

   L’exemple suivant montre comment enregistrer un certificat CA en mode `SNI_ONLY` à l’aide du 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
   ```

   Pour en savoir plus, veuillez consulter [Enregistrement des certificats CA](https://docs.aws.amazon.com//iot/latest/developerguide/register-CA-cert.html).

1.  (Facultatif) Mettez à jour les paramètres d'un certificat CA à l'aide de l'opération [Update CACertificate](https://docs.aws.amazon.com/iot/latest/apireference/API_UpdateCACertificate.html) API ou de la commande [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. 

   L’exemple suivant montre comment mettre à jour un certificat d’autorité de certification à l’aide AWS CLI :

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

## Enregistrer CA à l’aide d’un nom de modèle de mise en service


Pour enregistrer CA à l’aide d’un nom de modèle de mise en service, procédez comme suit :

1. Enregistrez le corps de votre modèle de mise en service en tant que fichier JSON. Vous pouvez trouver un exemple de corps de modèle dans un [exemple de corps de modèle](#jit-provisioning-example-templatebody).

1. Pour créer un modèle de provisionnement, utilisez l'[CreateProvisioningTemplate](https://docs.aws.amazon.com/iot/latest/apireference/API_CreateProvisioningTemplate.html)API ou la commande [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
   ```
**Note**  
Pour le just-in-time provisionnement (JITP), vous devez spécifier le type de modèle à utiliser `JITP` lors de la création du modèle de provisionnement. Pour plus d'informations sur le type de modèle, consultez [CreateProvisioningTemplate](https://docs.aws.amazon.com/iot/latest/apireference/API_CreateProvisioningTemplate.html)la *référence de l'AWS API*.

1. Pour enregistrer l'autorité de certification avec le nom du modèle, utilisez l'CACertificateAPI [Register](https://docs.aws.amazon.com/iot/latest/apireference/API_RegisterCACertificate.html) ou la commande [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 :

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