Configurar el aprovisionamiento de AWS IoT flota para los dispositivos principales de Greengrass - AWS IoT Greengrass

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.

Configurar el aprovisionamiento de AWS IoT flota para los dispositivos principales de Greengrass

Para instalar el software AWS IoT Greengrass Core con el aprovisionamiento de flotas, primero debe configurar los siguientes recursos en su. Cuenta de AWS Estos recursos permiten que los dispositivos se registren AWS IoT y funcionen como dispositivos principales de Greengrass. Siga los pasos de esta sección una vez para crear y configurar estos recursos en su Cuenta de AWS.

  • Un rol de IAM de intercambio de token, que los dispositivos principales utilizan para autorizar las llamadas a los servicios de AWS .

  • Un alias de AWS IoT rol que apunta al rol de intercambio de fichas.

  • (Opcional) Una AWS IoT política que los dispositivos principales utilizan para autorizar las llamadas a los AWS IoT Greengrass servicios AWS IoT y. Esta AWS IoT política debe permitir el iot:AssumeRoleWithCertificate permiso para el alias de la AWS IoT función que apunta a la función de intercambio de fichas.

    Puede usar una AWS IoT política única para todos los dispositivos principales de su flota, o puede configurar la plantilla de aprovisionamiento de la flota para crear una AWS IoT política para cada dispositivo principal.

  • Una plantilla de aprovisionamiento de AWS IoT flota. Esta plantilla debe especificar lo siguiente:

    • Cualquier AWS IoT cosa, un recurso. Puede especificar una lista de grupos de objetos existentes para implementar componentes en cada dispositivo cuando esté en línea.

    • Un recurso AWS IoT político. Este recurso puede definir al menos una de las siguientes propiedades:

      • El nombre de una AWS IoT política existente. Si elige esta opción, los dispositivos principales que cree a partir de esta plantilla utilizarán la misma AWS IoT política y podrá gestionar sus permisos como una flota.

      • Un documento AWS IoT de política. Si elige esta opción, cada dispositivo principal que cree a partir de esta plantilla utilizará una AWS IoT política única y podrá administrar los permisos de cada dispositivo principal individual.

    • Un recurso AWS IoT de certificados. Este recurso de certificado debe usar el parámetro AWS::IoT::Certificate::Id para adjuntar el certificado al dispositivo principal. Para obtener más información, consulte el Just-in-time aprovisionamiento en la Guía para AWS IoT desarrolladores.

  • Un certificado de notificación de AWS IoT aprovisionamiento y una clave privada para la plantilla de aprovisionamiento de flotas. Puede incrustar este certificado y esta clave privada en los dispositivos durante la fabricación, de modo que los dispositivos puedan registrarse y aprovisionarse por sí mismos cuando se conecten a Internet.

    importante

    Las claves privadas de la notificación de aprovisionamiento deben estar protegidas en todo momento, también en el dispositivo principal de Greengrass. Te recomendamos que utilices CloudWatch las estadísticas y los registros de Amazon para detectar indicios de uso indebido, como el uso no autorizado del certificado de reclamación para aprovisionar dispositivos. Si detecta un uso incorrecto, deshabilite el certificado de notificación de aprovisionamiento para que no se pueda utilizar para el aprovisionamiento de dispositivos. Para obtener más información, consulte Monitorear AWS IoT en la Guía para desarrolladores de AWS IoT Core .

    Para ayudarte a gestionar mejor el número de dispositivos y los dispositivos que se registran automáticamente en el tuyo Cuenta de AWS, puedes especificar un enlace previo al aprovisionamiento al crear una plantilla de aprovisionamiento de flotas. Un enlace de preaprovisionamiento es una AWS Lambda función que valida los parámetros de plantilla que proporcionan los dispositivos durante el registro. Por ejemplo, puede crear un enlace previo al aprovisionamiento que compruebe un ID de un dispositivo con una base de datos para comprobar que el dispositivo tiene permiso de aprovisionamiento. Para obtener más información, consulte los enlaces previos al aprovisionamiento en la Guía para desarrolladores de AWS IoT Core .

  • AWS IoT Política que se adjunta al certificado de notificación de aprovisionamiento para permitir que los dispositivos se registren y utilicen la plantilla de aprovisionamiento de flota.

Creación de un rol de intercambio de token

Los dispositivos principales de Greengrass utilizan una función de servicio de IAM, denominada función de intercambio de fichas, para autorizar las llamadas a los servicios. AWS El dispositivo utiliza el proveedor de AWS IoT credenciales para obtener AWS credenciales temporales para esta función, lo que permite al dispositivo interactuar con Amazon Logs AWS IoT, enviar registros a Amazon CloudWatch Logs y descargar artefactos de componentes personalizados de Amazon S3. Para obtener más información, consulte Autorización de los dispositivos principales para interactuar con los servicios de AWS.

Se utiliza un alias de AWS IoT rol para configurar el rol de intercambio de fichas para los dispositivos principales de Greengrass. Los alias de rol le permiten cambiar el rol de intercambio de token de un dispositivo, pero mantener la configuración del dispositivo igual. Para obtener más información, consulte Autorización de llamadas a los servicios de AWS en la Guía para desarrolladores de AWS IoT Core .

En esta sección, creará un rol de IAM de intercambio de tokens y un alias de AWS IoT rol que apunte al rol. Si ya ha configurado un dispositivo principal de Greengrass, puede usar su rol de intercambio de token y su alias de rol en lugar de crear otros nuevos.

Creación de un rol de IAM de intercambio de token
  1. Creación de un rol de IAM que su dispositivo puede usar como rol de intercambio de token. Haga lo siguiente:

    1. Creación de un archivo que contenga el documento de política de confianza que requiere el rol de intercambio de token.

      Por ejemplo, en un sistema basado en Linux, puede ejecutar el siguiente comando para usar GNU nano a fin de crear el archivo.

      nano device-role-trust-policy.json

      Copie el siguiente JSON en el archivo.

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "credentials.iot.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
    2. Creación del rol de intercambio de token con el documento de política de confianza.

      • GreengrassV2TokenExchangeRoleSustitúyalo por el nombre del rol de IAM que se va a crear.

      aws iam create-role --role-name GreengrassV2TokenExchangeRole --assume-role-policy-document file://device-role-trust-policy.json

      Si la solicitud se realiza exitosamente, la respuesta se parece al siguiente ejemplo.

      { "Role": { "Path": "/", "RoleName": "GreengrassV2TokenExchangeRole", "RoleId": "AROAZ2YMUHYHK5OKM77FB", "Arn": "arn:aws:iam::123456789012:role/GreengrassV2TokenExchangeRole", "CreateDate": "2021-02-06T00:13:29+00:00", "AssumeRolePolicyDocument": { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "credentials.iot.amazonaws.com" }, "Action": "sts:AssumeRole" } ] } }
    3. Creación de un archivo que contenga el documento de política de acceso que requiere el rol de intercambio de token.

      Por ejemplo, en un sistema basado en Linux, puede ejecutar el siguiente comando para usar GNU nano a fin de crear el archivo.

      nano device-role-access-policy.json

      Copie el siguiente JSON en el archivo.

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents", "logs:DescribeLogStreams", "s3:GetBucketLocation" ], "Resource": "*" } ] }
      nota

      Esta política de acceso no permite el acceso a los artefactos de componentes en los buckets de S3. Para implementar componentes personalizados que definan artefactos en Amazon S3, debe agregar permisos al rol para permitir que su dispositivo principal recupere artefactos de componentes. Para obtener más información, consulte Cómo permitir el acceso a los buckets de S3 para los artefactos del componente.

      Si aún no tiene un bucket de S3 para los artefactos de los componentes, puede agregar estos permisos más adelante, después de crear un bucket.

    4. Creación de la política de IAM a partir del documento de política.

      • GreengrassV2TokenExchangeRoleAccessSustitúyalo por el nombre de la política de IAM que se va a crear.

      aws iam create-policy --policy-name GreengrassV2TokenExchangeRoleAccess --policy-document file://device-role-access-policy.json

      Si la solicitud se realiza exitosamente, la respuesta se parece al siguiente ejemplo.

      { "Policy": { "PolicyName": "GreengrassV2TokenExchangeRoleAccess", "PolicyId": "ANPAZ2YMUHYHACI7C5Z66", "Arn": "arn:aws:iam::123456789012:policy/GreengrassV2TokenExchangeRoleAccess", "Path": "/", "DefaultVersionId": "v1", "AttachmentCount": 0, "PermissionsBoundaryUsageCount": 0, "IsAttachable": true, "CreateDate": "2021-02-06T00:37:17+00:00", "UpdateDate": "2021-02-06T00:37:17+00:00" } }
    5. Adjunte la política de IAM al rol de intercambio de token.

      • Reemplace GreengrassV2TokenExchangeRole por el nombre del rol de IAM.

      • Reemplace el ARN de la política por el ARN de la política de IAM que creó en el paso anterior.

      aws iam attach-role-policy --role-name GreengrassV2TokenExchangeRole --policy-arn arn:aws:iam::123456789012:policy/GreengrassV2TokenExchangeRoleAccess

      El comando no tiene ningún resultado si la solicitud se realiza correctamente.

  2. Cree un alias de AWS IoT rol que apunte al rol de intercambio de fichas.

    • GreengrassCoreTokenExchangeRoleAliasSustitúyalo por el nombre del alias del rol que se va a crear.

    • Reemplace el ARN del rol por el ARN del rol de IAM que creó en el paso anterior.

    aws iot create-role-alias --role-alias GreengrassCoreTokenExchangeRoleAlias --role-arn arn:aws:iam::123456789012:role/GreengrassV2TokenExchangeRole

    Si la solicitud se realiza exitosamente, la respuesta se parece al siguiente ejemplo.

    { "roleAlias": "GreengrassCoreTokenExchangeRoleAlias", "roleAliasArn": "arn:aws:iot:us-west-2:123456789012:rolealias/GreengrassCoreTokenExchangeRoleAlias" }
    nota

    Para crear un alias de rol, debe tener el permiso para transferir el rol de IAM de intercambio de token a AWS IoT. Si recibe un mensaje de error al intentar crear un alias de rol, compruebe que el AWS usuario tiene este permiso. Para obtener más información, consulte Conceder permisos a un usuario para transferir un rol a un AWS servicio en la Guía del AWS Identity and Access Management usuario.

Cree una AWS IoT política

Después de registrar un dispositivo como una AWS IoT cosa, ese dispositivo puede usar un certificado digital para autenticarse AWS. Este certificado incluye una o más AWS IoT políticas que definen los permisos que un dispositivo puede usar con el certificado. Estas políticas permiten que el dispositivo se comunique con AWS IoT y AWS IoT Greengrass.

Con el aprovisionamiento de AWS IoT flotas, los dispositivos se conectan AWS IoT para crear y descargar un certificado de dispositivo. En la plantilla de aprovisionamiento de flotas que cree en la siguiente sección, puede especificar si desea AWS IoT adjuntar la misma AWS IoT política a todos los certificados de los dispositivos o crear una nueva política para cada dispositivo.

En esta sección, creará una AWS IoT política que se AWS IoT adjunte a los certificados de todos los dispositivos. Con este enfoque, puede administrar los permisos de todos los dispositivos como una flota. Si prefieres crear una AWS IoT política nueva para cada dispositivo, puedes saltarte esta sección y consultar la política que contiene cuando definas la plantilla de tu flota.

Para crear una AWS IoT política
  • Cree una AWS IoT política que defina los AWS IoT permisos para su flota de dispositivos principales de Greengrass. La siguiente política permite el acceso a todos los temas de MQTT y a las operaciones de Greengrass, de modo que su dispositivo funcione con aplicaciones personalizadas y con cambios futuros que requieran nuevas operaciones de Greengrass. Esta política también concede el permiso iot:AssumeRoleWithCertificate, que permite a los dispositivos utilizar el rol de intercambio de token que creó en la sección anterior. Puede restringir esta política en función del caso de uso. Para obtener más información, consulte AWS IoT Política mínima para los dispositivos AWS IoT Greengrass V2 principales.

    Haga lo siguiente:

    1. Cree un archivo que contenga el documento AWS IoT de política que requieren los dispositivos principales de Greengrass.

      Por ejemplo, en un sistema basado en Linux, puede ejecutar el siguiente comando para usar GNU nano a fin de crear el archivo.

      nano greengrass-v2-iot-policy.json

      Copie el siguiente JSON en el archivo.

      • Sustituya el iot:AssumeRoleWithCertificate recurso por el ARN del alias de AWS IoT rol que creó en la sección anterior.

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iot:Publish", "iot:Subscribe", "iot:Receive", "iot:Connect", "greengrass:*" ], "Resource": [ "*" ] }, { "Effect": "Allow", "Action": "iot:AssumeRoleWithCertificate", "Resource": "arn:aws:iot:us-west-2:123456789012:rolealias/GreengrassCoreTokenExchangeRoleAlias" } ] }
    2. Cree una AWS IoT política a partir del documento de política.

      • GreengrassV2IoTThingPolicySustitúyala por el nombre de la política que se va a crear.

      aws iot create-policy --policy-name GreengrassV2IoTThingPolicy --policy-document file://greengrass-v2-iot-policy.json

      Si la solicitud se realiza exitosamente, la respuesta se parece al siguiente ejemplo.

      { "policyName": "GreengrassV2IoTThingPolicy", "policyArn": "arn:aws:iot:us-west-2:123456789012:policy/GreengrassV2IoTThingPolicy", "policyDocument": "{ \"Version\": \"2012-10-17\", \"Statement\": [ { \"Effect\": \"Allow\", \"Action\": [ \"iot:Publish\", \"iot:Subscribe\", \"iot:Receive\", \"iot:Connect\", \"greengrass:*\" ], \"Resource\": [ \"*\" ] }, { \"Effect\": \"Allow\", \"Action\": \"iot:AssumeRoleWithCertificate\", \"Resource\": \"arn:aws:iot:us-west-2:123456789012:rolealias/GreengrassCoreTokenExchangeRoleAlias\" } ] }", "policyVersionId": "1" }

Creación de una plantilla de aprovisionamiento de flota

AWS IoT Las plantillas de aprovisionamiento de flotas definen cómo aprovisionar AWS IoT los artículos, las políticas y los certificados. Para aprovisionar los dispositivos principales de Greengrass con el complemento de aprovisionamiento de flotas, debe crear una plantilla en la que se especifique lo siguiente:

  • Cualquier AWS IoT cosa, un recurso. Puede especificar una lista de grupos de objetos existentes para implementar componentes en cada dispositivo cuando esté en línea.

  • Un recurso AWS IoT político. Este recurso puede definir al menos una de las siguientes propiedades:

    • El nombre de una AWS IoT política existente. Si elige esta opción, los dispositivos principales que cree a partir de esta plantilla utilizarán la misma AWS IoT política y podrá gestionar sus permisos como una flota.

    • Un documento AWS IoT de política. Si elige esta opción, cada dispositivo principal que cree a partir de esta plantilla utilizará una AWS IoT política única y podrá administrar los permisos de cada dispositivo principal individual.

  • Un recurso AWS IoT de certificados. Este recurso de certificado debe usar el parámetro AWS::IoT::Certificate::Id para adjuntar el certificado al dispositivo principal. Para obtener más información, consulte el Just-in-time aprovisionamiento en la Guía para AWS IoT desarrolladores.

En la plantilla, puede especificar si desea añadirlo a una lista de grupos de cosas existentes. AWS IoT Cuando el dispositivo principal se conecta AWS IoT Greengrass por primera vez, recibe despliegues de Greengrass para cada grupo de elementos del que es miembro. Puede usar grupos de objetos para implementar el software más reciente en cada dispositivo tan pronto como esté en línea. Para obtener más información, consulte Implemente AWS IoT Greengrass componentes en los dispositivos.

El AWS IoT servicio requiere permisos para crear y actualizar sus AWS IoT recursos Cuenta de AWS al aprovisionar sus dispositivos. Para dar acceso al AWS IoT servicio, debe crear un rol de IAM y proporcionarlo al crear la plantilla. AWS IoT proporciona una política gestionada, el AWSIoTThingsregistro, que permite el acceso a todos los permisos que se AWS IoT puedan utilizar al aprovisionar dispositivos. Puede usar esta política administrada o crear una política personalizada que limite los permisos de la política administrada para el caso de uso.

En esta sección, se crea una función de IAM que permite AWS IoT aprovisionar recursos para los dispositivos y se crea una plantilla de aprovisionamiento de flotas que utiliza esa función de IAM.

Cómo crear una plantilla de aprovisionamiento de flotas
  1. Cree una función de IAM que AWS IoT pueda asumir como aprovisionamiento de recursos en su empresa. Cuenta de AWS Haga lo siguiente:

    1. Cree un archivo que contenga el documento de política de confianza que le AWS IoT permita asumir el rol.

      Por ejemplo, en un sistema basado en Linux, puede ejecutar el siguiente comando para usar GNU nano a fin de crear el archivo.

      nano aws-iot-trust-policy.json

      Copie el siguiente JSON en el archivo.

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "iot.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
    2. Cree un rol de IAM con un documento de política de confianza.

      • GreengrassFleetProvisioningRoleSustitúyalo por el nombre del rol de IAM que se va a crear.

      aws iam create-role --role-name GreengrassFleetProvisioningRole --assume-role-policy-document file://aws-iot-trust-policy.json

      Si la solicitud se realiza exitosamente, la respuesta se parece al siguiente ejemplo.

      { "Role": { "Path": "/", "RoleName": "GreengrassFleetProvisioningRole", "RoleId": "AROAZ2YMUHYHK5OKM77FB", "Arn": "arn:aws:iam::123456789012:role/GreengrassFleetProvisioningRole", "CreateDate": "2021-07-26T00:15:12+00:00", "AssumeRolePolicyDocument": { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "iot.amazonaws.com" }, "Action": "sts:AssumeRole" } ] } } }
    3. Revise la política AWSIoTThingsde registro, que permite el acceso a todos los permisos que se AWS IoT puedan utilizar al aprovisionar dispositivos. Puede usar esta política administrada o crear una política personalizada que defina los permisos restringidos para el caso de uso. Si decide crear una política personalizada, hágalo ahora.

    4. Adjunte la política de IAM al rol de aprovisionamiento de flotas.

      • Reemplace GreengrassFleetProvisioningRole por el nombre del rol de IAM.

      • Si creó una política personalizada en el paso anterior, sustituya el ARN de la política por el ARN de la política de IAM que vaya a utilizar.

      aws iam attach-role-policy --role-name GreengrassFleetProvisioningRole --policy-arn arn:aws:iam::aws:policy/service-role/AWSIoTThingsRegistration

      El comando no tiene ningún resultado si la solicitud se realiza correctamente.

  2. (Opcional) Cree un enlace de aprovisionamiento previo, que es una función de AWS Lambda que valida los parámetros de plantilla que los dispositivos proporcionan durante el registro. Puede usar un enlace de aprovisionamiento previo para tener más control sobre cómo y cuántos dispositivos están integrados en la Cuenta de AWS. Para obtener más información, consulte los enlaces previos al aprovisionamiento en la Guía para desarrolladores de AWS IoT Core .

  3. Cree una plantilla de aprovisionamiento de flotas. Haga lo siguiente:

    1. Cree un archivo que contenga el documento de plantilla de aprovisionamiento.

      Por ejemplo, en un sistema basado en Linux, puede ejecutar el siguiente comando para usar GNU nano a fin de crear el archivo.

      nano greengrass-fleet-provisioning-template.json

      Escriba el documento de plantilla de aprovisionamiento. Puedes empezar con el siguiente ejemplo de plantilla de aprovisionamiento, que especifica la creación de AWS IoT algo con las siguientes propiedades:

      • El nombre del objeto es el valor que se especifica en el parámetro de la plantilla ThingName.

      • El objeto es una parte del grupo de objetos que se especifica en el parámetro ThingGroupName de plantilla. El grupo de cosas debe existir en su. Cuenta de AWS

      • El certificado de la cosa lleva GreengrassV2IoTThingPolicy adjunto el nombre de la AWS IoT política.

      Para más información, consulte Plantillas de aprovisionamiento en la Guía para desarrolladores de AWS IoT Core .

      { "Parameters": { "ThingName": { "Type": "String" }, "ThingGroupName": { "Type": "String" }, "AWS::IoT::Certificate::Id": { "Type": "String" } }, "Resources": { "MyThing": { "OverrideSettings": { "AttributePayload": "REPLACE", "ThingGroups": "REPLACE", "ThingTypeName": "REPLACE" }, "Properties": { "AttributePayload": {}, "ThingGroups": [ { "Ref": "ThingGroupName" } ], "ThingName": { "Ref": "ThingName" } }, "Type": "AWS::IoT::Thing" }, "MyPolicy": { "Properties": { "PolicyName": "GreengrassV2IoTThingPolicy" }, "Type": "AWS::IoT::Policy" }, "MyCertificate": { "Properties": { "CertificateId": { "Ref": "AWS::IoT::Certificate::Id" }, "Status": "Active" }, "Type": "AWS::IoT::Certificate" } } }
      nota

      MyThingMyPolicy, y MyCertificate son nombres arbitrarios que identifican cada especificación de recurso de la plantilla de aprovisionamiento de flota. AWS IoT no utiliza estos nombres en los recursos que crea a partir de la plantilla. Puede utilizar estos nombres o sustituirlos por valores que lo ayuden a identificar cada recurso de la plantilla.

    2. Cree la plantilla de aprovisionamiento de flotas a partir del documento de plantilla de aprovisionamiento.

      • Sustituya GreengrassFleetProvisioningTemplate por el nombre de la plantilla a crear.

      • Sustituya la descripción de la plantilla por una descripción de la plantilla.

      • Sustituya rol del ARN de aprovisionamiento por el ARN del rol creó anteriormente.

      Linux or Unix
      aws iot create-provisioning-template \ --template-name GreengrassFleetProvisioningTemplate \ --description "A provisioning template for Greengrass core devices." \ --provisioning-role-arn "arn:aws:iam::123456789012:role/GreengrassFleetProvisioningRole" \ --template-body file://greengrass-fleet-provisioning-template.json \ --enabled
      Windows Command Prompt (CMD)
      aws iot create-provisioning-template ^ --template-name GreengrassFleetProvisioningTemplate ^ --description "A provisioning template for Greengrass core devices." ^ --provisioning-role-arn "arn:aws:iam::123456789012:role/GreengrassFleetProvisioningRole" ^ --template-body file://greengrass-fleet-provisioning-template.json ^ --enabled
      PowerShell
      aws iot create-provisioning-template ` --template-name GreengrassFleetProvisioningTemplate ` --description "A provisioning template for Greengrass core devices." ` --provisioning-role-arn "arn:aws:iam::123456789012:role/GreengrassFleetProvisioningRole" ` --template-body file://greengrass-fleet-provisioning-template.json ` --enabled
      nota

      Si creó un enlace de aprovisionamiento previo, especifique el ARN de la función de Lambda del enlace de aprovisionamiento previo con el argumento --pre-provisioning-hook.

      --pre-provisioning-hook targetArn=arn:aws:lambda:us-west-2:123456789012:function:GreengrassPreProvisioningHook

      Si la solicitud se realiza exitosamente, la respuesta se parece al siguiente ejemplo.

      { "templateArn": "arn:aws:iot:us-west-2:123456789012:provisioningtemplate/GreengrassFleetProvisioningTemplate", "templateName": "GreengrassFleetProvisioningTemplate", "defaultVersionId": 1 }

Creación de un certificado de notificación de aprovisionamiento y una clave privada

Los certificados de reclamación son certificados X.509 que permiten a los dispositivos registrarse como AWS IoT objetos y recuperar un certificado de dispositivo X.509 exclusivo para utilizarlo en las operaciones habituales. Tras crear un certificado de reclamación, debe adjuntar una AWS IoT política que permita a los dispositivos utilizarlo para crear certificados de dispositivos únicos y aprovisionarlos con una plantilla de aprovisionamiento de flota. Los dispositivos con el certificado de reclamación se pueden aprovisionar únicamente con la plantilla de aprovisionamiento que usted permita en la política AWS IoT .

En esta sección, usted crea el certificado de reclamación y lo configura para que los dispositivos lo usen con la plantilla de aprovisionamiento de flotas que creó en la sección anterior.

importante

Las claves privadas de la notificación de aprovisionamiento deben estar protegidas en todo momento, también en el dispositivo principal de Greengrass. Te recomendamos que utilices CloudWatch las estadísticas y los registros de Amazon para detectar indicios de uso indebido, como el uso no autorizado del certificado de reclamación para aprovisionar dispositivos. Si detecta un uso incorrecto, deshabilite el certificado de notificación de aprovisionamiento para que no se pueda utilizar para el aprovisionamiento de dispositivos. Para obtener más información, consulte Monitorear AWS IoT en la Guía para desarrolladores de AWS IoT Core .

Para ayudarte a gestionar mejor el número de dispositivos y los dispositivos que se registran automáticamente en el tuyo Cuenta de AWS, puedes especificar un enlace previo al aprovisionamiento al crear una plantilla de aprovisionamiento de flotas. Un enlace de preaprovisionamiento es una AWS Lambda función que valida los parámetros de plantilla que proporcionan los dispositivos durante el registro. Por ejemplo, puede crear un enlace previo al aprovisionamiento que compruebe un ID de un dispositivo con una base de datos para comprobar que el dispositivo tiene permiso de aprovisionamiento. Para obtener más información, consulte los enlaces previos al aprovisionamiento en la Guía para desarrolladores de AWS IoT Core .

Cómo crear un certificado de reclamación de aprovisionamiento y una clave privada
  1. Cree una carpeta en la que pueda descargar el certificado de reclamación y la clave privada.

    mkdir claim-certs
  2. Cree y guarde un certificado y una clave privada para usarlos en el aprovisionamiento. AWS IoT proporciona certificados de cliente firmados por la autoridad de certificación (CA) raíz de Amazon.

    Linux or Unix
    aws iot create-keys-and-certificate \ --certificate-pem-outfile "claim-certs/claim.pem.crt" \ --public-key-outfile "claim-certs/claim.public.pem.key" \ --private-key-outfile "claim-certs/claim.private.pem.key" \ --set-as-active
    Windows Command Prompt (CMD)
    aws iot create-keys-and-certificate ^ --certificate-pem-outfile "claim-certs/claim.pem.crt" ^ --public-key-outfile "claim-certs/claim.public.pem.key" ^ --private-key-outfile "claim-certs/claim.private.pem.key" ^ --set-as-active
    PowerShell
    aws iot create-keys-and-certificate ` --certificate-pem-outfile "claim-certs/claim.pem.crt" ` --public-key-outfile "claim-certs/claim.public.pem.key" ` --private-key-outfile "claim-certs/claim.private.pem.key" ` --set-as-active

    La respuesta contiene información sobre el certificado, si la solicitud se realiza correctamente. Guarde el ARN del certificado para usarlo más adelante.

  3. Cree y adjunte una AWS IoT política que permita a los dispositivos usar el certificado para crear certificados de dispositivo únicos y aprovisionarlos con la plantilla de aprovisionamiento de flotas. La siguiente política permite acceder a la API MQTT de aprovisionamiento de dispositivos. Para obtener más información, consulte la API MQTT de aprovisionamiento de dispositivos en la Guía para desarrolladores de AWS IoT Core .

    Haga lo siguiente:

    1. Cree un archivo que contenga el documento AWS IoT de política que requieren los dispositivos principales de Greengrass.

      Por ejemplo, en un sistema basado en Linux, puede ejecutar el siguiente comando para usar GNU nano a fin de crear el archivo.

      nano greengrass-provisioning-claim-iot-policy.json

      Copie el siguiente JSON en el archivo.

      • Sustituya cada instancia por la region instancia en la Región de AWS que configuró el aprovisionamiento de la flota.

      • Sustituya cada instancia de account-id por su Cuenta de AWS ID.

      • Sustituya cada instancia GreengrassFleetProvisioningTemplate de por el nombre de la plantilla de aprovisionamiento de flota que creó en la sección anterior.

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "iot:Connect", "Resource": "*" }, { "Effect": "Allow", "Action": [ "iot:Publish", "iot:Receive" ], "Resource": [ "arn:aws:iot:region:account-id:topic/$aws/certificates/create/*", "arn:aws:iot:region:account-id:topic/$aws/provisioning-templates/GreengrassFleetProvisioningTemplate/provision/*" ] }, { "Effect": "Allow", "Action": "iot:Subscribe", "Resource": [ "arn:aws:iot:region:account-id:topicfilter/$aws/certificates/create/*", "arn:aws:iot:region:account-id:topicfilter/$aws/provisioning-templates/GreengrassFleetProvisioningTemplate/provision/*" ] } ] }
    2. Cree una AWS IoT política a partir del documento de política.

      • GreengrassProvisioningClaimPolicySustitúyala por el nombre de la política que se va a crear.

      aws iot create-policy --policy-name GreengrassProvisioningClaimPolicy --policy-document file://greengrass-provisioning-claim-iot-policy.json

      Si la solicitud se realiza exitosamente, la respuesta se parece al siguiente ejemplo.

      { "policyName": "GreengrassProvisioningClaimPolicy", "policyArn": "arn:aws:iot:us-west-2:123456789012:policy/GreengrassProvisioningClaimPolicy", "policyDocument": "{ \"Version\": \"2012-10-17\", \"Statement\": [ { \"Effect\": \"Allow\", \"Action\": \"iot:Connect\", \"Resource\": \"*\" }, { \"Effect\": \"Allow\", \"Action\": [ \"iot:Publish\", \"iot:Receive\" ], \"Resource\": [ \"arn:aws:iot:region:account-id:topic/$aws/certificates/create/*\", \"arn:aws:iot:region:account-id:topic/$aws/provisioning-templates/GreengrassFleetProvisioningTemplate/provision/*\" ] }, { \"Effect\": \"Allow\", \"Action\": \"iot:Subscribe\", \"Resource\": [ \"arn:aws:iot:region:account-id:topicfilter/$aws/certificates/create/*\", \"arn:aws:iot:region:account-id:topicfilter/$aws/provisioning-templates/GreengrassFleetProvisioningTemplate/provision/*\" ] } ] }", "policyVersionId": "1" }
  4. Adjunte la AWS IoT política al certificado de notificación de aprovisionamiento.

    • GreengrassProvisioningClaimPolicySustitúyala por el nombre de la política que se va a adjuntar.

    • Sustituya el ARN de destino por el ARN del certificado de reclamación de aprovisionamiento.

    aws iot attach-policy --policy-name GreengrassProvisioningClaimPolicy --target arn:aws:iot:us-west-2:123456789012:cert/aa0b7958770878eabe251d8a7ddd547f4889c524c9b574ab9fbf65f32248b1d4

    El comando no tiene ningún resultado si la solicitud se realiza correctamente.

Ahora tiene un certificado de notificación de aprovisionamiento y una clave privada que los dispositivos pueden usar para registrarse AWS IoT y aprovisionarse como dispositivos principales de Greengrass. Puede incrustar el certificado de reclamación y la clave privada en los dispositivos durante la fabricación, o bien copiar el certificado y la clave en los dispositivos antes de instalar el software AWS IoT Greengrass Core. Para obtener más información, consulte Instale el software AWS IoT Greengrass principal con aprovisionamiento AWS IoT de flota.