

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.

# Aprovisionamiento de dispositivos que tienen certificados de dispositivo
<a name="provision-w-cert"></a>

AWS IoT proporciona tres formas de aprovisionar dispositivos cuando ya tienen un certificado de dispositivo (y una clave privada asociada):
+ Aprovisionamiento de un solo objeto con una plantilla de aprovisionamiento. Esta es una buena opción si solo necesita aprovisionar los dispositivos de uno en uno.
+ Just-in-time aprovisionamiento (JITP) con una plantilla que aprovisiona un dispositivo cuando se conecta por primera vez a. AWS IoT Esta es una buena opción si necesita registrar un gran número de dispositivos, pero no dispone de información sobre ellos que se pueda incluir en una lista de aprovisionamiento por lotes.
+ Registro masivo Esta opción le permite especificar una lista de valores de aprovisionamiento de un solo objeto que se almacenan en un archivo en un bucket de S3. Este enfoque funciona bien si tiene un gran número de dispositivos conocidos cuyas características puede incluir en una lista. 

**Topics**
+ [Aprovisionamiento de un solo objeto](single-thing-provisioning.md)
+ [Just-in-time aprovisionamiento](jit-provisioning.md)
+ [Registro masivo](bulk-provisioning.md)

# Aprovisionamiento de un solo objeto
<a name="single-thing-provisioning"></a>

Para aprovisionar algo, utilice la [RegisterThing](https://docs.aws.amazon.com/iot/latest/apireference/API_RegisterThing.html)API o el comando `register-thing` CLI. El comando de CLI `register-thing` adopta los argumentos siguientes:

--template-body  
La plantilla de aprovisionamiento.

--parameters  
Una lista de pares de nombre-valor para los parámetros utilizados en la plantilla de aprovisionamiento, en formato JSON (por ejemplo, `{"ThingName" : "MyProvisionedThing", "CSR" : "csr-text"}`).

Consulte [Aprovisionamiento de plantillas](provision-template.md).

[RegisterThing](https://docs.aws.amazon.com/iot/latest/apireference/API_RegisterThing.html)o `register-thing` devuelve ARNs los recursos y el texto del certificado que creó:

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

Si se omite el parámetro en el diccionario, se utilizará el valor predeterminado. Si no se especifica el valor predeterminado, el parámetro no se reemplazará por un valor.

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

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](metrics_dimensions.md#provisioning-metrics) en Amazon CloudWatch.

**Topics**
+ [Información general de JITP](#jit-provisioning-overview)
+ [Registrar CA mediante una plantilla de aprovisionamiento](#jit-provisioning-registerCA-template)
+ [Registrar una CA mediante el nombre de la plantilla de aprovisionamiento](#jit-provisioning-registerCA-templateName)

## Información general de JITP
<a name="jit-provisioning-overview"></a>

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](fleet-provision-api.md#register-thing). 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 se pueden declarar y a los que se puede 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)](https://datatracker.ietf.org/doc/html/rfc3546#section-3.1) cuando se conecte a AWS IoT Core.

### Ejemplo de cuerpo de plantilla
<a name="jit-provisioning-example-templatebody"></a>

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\$1ACTIVE
+ Crear un recurso de objeto
+ Crear un recurso de política
+ Asociar la política al certificado
+ Asocie el certificado al objeto .
+ Actualizar el estado del certificado a ACTIVE

El aprovisionamiento del dispositivo falla si el certificado no tiene todas las propiedades mencionadas en la sección `Parameters` del `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, consulte[Métricas de aprovisionamiento de dispositivos](metrics_dimensions.md#provisioning-metrics). Para obtener más información acerca del aprovisionamiento de dispositivos, consulte [Plantillas de aprovisionamiento](provision-template.md).

**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](https://docs.aws.amazon.com/general/latest/gr/iot-core.html#throttling-limits) 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](https://console.aws.amazon.com/support/home) para aumentar las cuotas de limitación controlada, si es necesario.

## Registrar CA mediante una plantilla de aprovisionamiento
<a name="jit-provisioning-registerCA-template"></a>

Para registrar una CA mediante una plantilla de aprovisionamiento completa, siga estos pasos: 

1. 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](#jit-provisioning-overview). Puede utilizar distintas herramientas para crear la salida JSON necesaria, como `json.dumps` (Python) o `JSON.stringify` (Node). El valor del campo `roleARN` debe ser el ARN de un rol que tenga `AWSIoTThingsRegistration` asociado. Además, la plantilla puede utilizar un `PolicyName` existente en lugar del `PolicyDocument` insertado en el ejemplo. 

1. Registre un certificado de CA con la operación [Register CACertificate](https://docs.aws.amazon.com/iot/latest/apireference/API_RegisterCACertificate.html) API o el 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. 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-mode SNI_ONLY
                    --set-as-active --allow-auto-registration --registration-config file://your-template
   ```

   Para obtener más información, consulte [Registrar sus certificados de CA](https://docs.aws.amazon.com//iot/latest/developerguide/register-CA-cert.html).

1.  (Opcional) Actualice la configuración de un certificado de CA mediante la operación [Actualizar CACertificate](https://docs.aws.amazon.com/iot/latest/apireference/API_UpdateCACertificate.html) API o el 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. 

   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
<a name="jit-provisioning-registerCA-templateName"></a>

Para registrar una CA mediante el nombre de una plantilla de aprovisionamiento, siga estos pasos:

1. 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](#jit-provisioning-example-templatebody).

1. Para crear una plantilla de aprovisionamiento, utilice la [CreateProvisioningTemplate](https://docs.aws.amazon.com/iot/latest/apireference/API_CreateProvisioningTemplate.html)API o el 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**  
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 referencia de [CreateProvisioningTemplate](https://docs.aws.amazon.com/iot/latest/apireference/API_CreateProvisioningTemplate.html)la AWS API.*

1. Para registrar la CA con el nombre de la plantilla, utilice la CACertificate API de [registro](https://docs.aws.amazon.com/iot/latest/apireference/API_RegisterCACertificate.html) o el 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:

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

# Registro masivo
<a name="bulk-provisioning"></a>

Puede usar el comando [https://docs.aws.amazon.com/iot/latest/apireference/API_StartThingRegistrationTask.html](https://docs.aws.amazon.com/iot/latest/apireference/API_StartThingRegistrationTask.html) para registrar varios objetos a la vez. Este comando adopta una plantilla de aprovisionamiento, un nombre de bucket de S3; un nombre de clave y un ARN de rol que permite el acceso al archivo en el bucket de S3. El archivo en el bucket de S3 contiene los valores utilizados para reemplazar los parámetros de la plantilla. El archivo debe ser un archivo JSON delimitado por nueva línea. Cada línea contiene todos los valores de los parámetros para el registro de un único dispositivo. Por ejemplo:

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

Las siguientes operaciones de API relacionadas con el registro masivo pueden ser útiles:
+ [ListThingRegistrationTasks](https://docs.aws.amazon.com/iot/latest/apireference/API_ListThingRegistrationTasks.html): Enumera las tareas actuales de aprovisionamiento masivo de productos. 
+ [ DescribeThingRegistrationTask](https://docs.aws.amazon.com/iot/latest/apireference/API_DescribeThingRegistrationTask.html): proporciona información sobre una tarea específica de registro masivo de productos.
+ [StopThingRegistrationTask](https://docs.aws.amazon.com/iot/latest/apireference/API_StopThingRegistrationTask.html): Detiene una tarea de registro masivo.
+ [ListThingRegistrationTaskReports](https://docs.aws.amazon.com/iot/latest/apireference/API_ListThingRegistrationTaskReports.html): Se utiliza para comprobar los resultados y los errores de una tarea de registro masivo.

**nota**  
Solo puede ejecutarse una tarea de operación de registro masivo a la vez (por cuenta).
Las operaciones de registro masivo llaman a otras operaciones de API del plano de AWS IoT control. Estas llamadas pueden superar las [cuotas de limitación controlada de AWS IoT](https://docs.aws.amazon.com/general/latest/gr/iot-core.html#throttling-limits) establecidas en la cuenta y provocar errores de limitación. Póngase en contacto con [AWS Customer Support](https://console.aws.amazon.com/support/home) para aumentar AWS IoT sus cuotas de regulación, si es necesario.