Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Just-in-time : aprovisionamiento
Puede utilizar el just-in-time aprovisionamiento (JITP) para aprovisionar sus dispositivos la primera vez que intenten conectarse a ellos. AWS IoT Para aprovisionar el dispositivo, debe habilitar el registro automático y asociar una plantilla de aprovisionamiento al certificado de CA utilizado para firmar el certificado de dispositivo. Los éxitos y errores de aprovisionamiento se registran como Métricas de aprovisionamiento de dispositivos en Amazon CloudWatch.
Temas
Información general de JITP
Cuando un dispositivo intenta conectarse mediante un certificado firmado AWS IoT por un certificado de CA registrado, AWS IoT carga la plantilla del certificado de CA y la utiliza para realizar la llamada RegisterThing. El flujo de trabajo de JITP registra primero un certificado con un valor de estado de PENDING_ACTIVATION
. Cuando se completa el flujo de aprovisionamiento del dispositivo, el estado del certificado cambia a ACTIVE
.
AWS IoT define los siguientes parámetros que puede declarar y hacer referencia en las plantillas de aprovisionamiento:
-
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
Los valores de estos parámetros de plantilla de aprovisionamiento se limitan a lo que JITP puede extraer del campo de asunto del certificado del dispositivo que se va a aprovisionar. El certificado debe contener valores para todos los parámetros en el cuerpo de la plantilla. El parámetro AWS::IoT::Certificate::Id
se refiere a un ID generado internamente, no un ID que se encuentra en el certificado. Puede obtener el valor de este ID mediante la principal()
función incluida en una AWS IoT regla.
nota
Puede aprovisionar dispositivos mediante la función de AWS IoT Core just-in-time aprovisionamiento (JITP) sin tener que enviar toda la cadena de confianza en la primera conexión de un dispositivo a una. AWS IoT Core La presentación del certificado de CA es opcional, pero es necesario que el dispositivo envíe la extensión Indicación del nombre del servidor (SNI)
Ejemplo de cuerpo de plantilla
El siguiente archivo JSON es un ejemplo de cuerpo de plantilla de JITP completa.
{ "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\"] }] }" } } } }
Esta plantilla de ejemplo declara valores para los parámetros de aprovisionamiento AWS::IoT::Certificate::CommonName
, AWS::IoT::Certificate::SerialNumber
, AWS::IoT::Certificate::Country
y AWS::IoT::Certificate::Id
que se extraen del certificado y se usan en la sección Resources
. El flujo de trabajo de JITP utiliza después esta plantilla para llevar a cabo las siguientes acciones:
-
Registrar un certificado y establecer su estado en PENDING_ACTIVE
-
Crear un recurso de objeto
-
Crear un recurso de política
-
Asociar la política al certificado
-
Asociar el certificado al objeto
-
Actualizar el estado del certificado a ACTIVE
Se produce un error en el aprovisionamiento del dispositivo si el certificado no tiene todas las propiedades mencionadas en la Parameters
sección. templateBody
Por ejemplo, si AWS::IoT::Certificate::Country
está incluido en la plantilla, pero el certificado no tiene ninguna propiedad Country
, se produce un error en el aprovisionamiento del dispositivo.
También puedes utilizarla CloudTrail para solucionar problemas con tu plantilla JITP. Para obtener información sobre las métricas que se registran en Amazon CloudWatch, consulteMétricas de aprovisionamiento de dispositivos. Para obtener más información acerca del aprovisionamiento de dispositivos, consulte Plantillas de aprovisionamiento.
nota
Durante el proceso de aprovisionamiento, el just-in-time aprovisionamiento (JITP) llama a otras operaciones de la API del plano AWS IoT de control. Estas llamadas pueden superar las cuotas de limitación de AWS IoT establecidas en su cuenta y provocar una limitación controlada de las llamadas. Póngase en contacto con el servicio de atención al cliente de AWS
Registrar CA mediante una plantilla de aprovisionamiento
Para registrar una CA mediante una plantilla de aprovisionamiento completa, siga estos pasos:
-
Guarde la plantilla de aprovisionamiento y la información del ARN del rol como en el siguiente ejemplo como un archivo 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" }
En este ejemplo, el valor del campo
templateBody
debe ser un objeto JSON especificado como una cadena de escape y solo puede utilizar los valores de la lista anterior. Puede utilizar distintas herramientas para crear la salida JSON necesaria, comojson.dumps
(Python) oJSON.stringify
(Node). El valor del camporoleARN
debe ser el ARN de un rol que tengaAWSIoTThingsRegistration
asociado. Además, la plantilla puede utilizar unPolicyName
existente en lugar delPolicyDocument
insertado en el ejemplo. -
Registre un certificado de CA con la operación de API RegisterCACertificate o el comando de CLI
register-ca-certificate
. Especificará el directorio de la plantilla de aprovisionamiento y la información del ARN del rol que guardó en el paso anterior:A continuación, se muestra un ejemplo de cómo registrar un certificado de CA en modo
DEFAULT
mediante 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
A continuación, se muestra un ejemplo de cómo registrar un certificado de CA en modo
SNI_ONLY
mediante la AWS CLI:aws iot register-ca-certificate --ca-certificate file://
your-ca-cert
--certificate-modeSNI_ONLY
--set-as-active --allow-auto-registration --registration-config file://your-template
Para obtener más información, consulte Registrar sus certificados de CA.
-
(Opcional) Actualice la configuración de un certificado de CA mediante la operación de API UpdateCACertificate o el comando de CLI
update-ca-certificate
.El siguiente ejemplo muestra cómo actualizar un certificado de CA con la AWS CLI:
aws iot update-ca-certificate --certificate-id
caCertificateId
--new-auto-registration-status ENABLE --registration-config file://your-template
Registrar una CA mediante el nombre de la plantilla de aprovisionamiento
Para registrar una CA mediante el nombre de una plantilla de aprovisionamiento, siga estos pasos:
-
Guarde el cuerpo de la plantilla de aprovisionamiento como un archivo JSON. Puede encontrar un cuerpo de plantilla de ejemplo en el cuerpo de la plantilla de ejemplo.
-
Para crear una plantilla de aprovisionamiento, utilice la API CreateProvisioningde plantilla o el comando
create-provisioning-template
CLI:aws iot create-provisioning-template --template-name
your-template-name
\ --template-body file://your-template-body.json
--type JITP \ --provisioning-role-arnarn:aws:iam::123456789012:role/test
nota
Para el just-in-time aprovisionamiento (JITP), debe especificar el tipo de plantilla que se utilizará
JITP
al crear la plantilla de aprovisionamiento. Para obtener más información sobre el tipo de plantilla, consulta la sección CreateProvisioningPlantilla en la referencia de la AWS API. -
Para registrar una CA con el nombre de la plantilla, utilice la API RegisterCACertificate o el comando de CLI
register-ca-certificate
:aws iot register-ca-certificate --ca-certificate file:
//your-ca-cert
--verification-certfile://your-verification-cert
\ --set-as-active --allow-auto-registration --registration-config templateName=your-template-name