ust-in-time Approvisionnement J - AWS IoT Core

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.

ust-in-time Approvisionnement J

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 sur Amazon CloudWatch.

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. 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) 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_ACTIVE.

  • 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 dutemplateBody. 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, consultezMétriques de mise en service d'appareils. Pour plus d’informations sur les modèles de mise en service, voir Modèles de mise en service.

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 définis pour votre compte et entraîner des appels limités. Veuillez contacter le AWS service clientèle 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. 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.

  2. Enregistrez un certificat CA à l’aide de l’opération d’API RegisterCACertificate ou de la commande CLI register-ca-certificate. 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.

  3. (Facultatif) Mettez à jour les paramètres d’un certificat CA à l’aide de l’opération d’API UpdateCACertificate ou de la commande CLI update-ca-certificate.

    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.

  2. Pour créer un modèle de provisionnement, utilisez l'CreateProvisioningTemplateAPI ou la commande create-provisioning-templateCLI :

    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 CreateProvisioningTemplatela référence de l'AWS API.

  3. Pour enregistrer CA avec le nom du modèle, utilisez l’API RegisterCAertificate ou la commande CLI : register-ca-certificate

    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