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 suCuenta de AWS.

  • Una función de IAM de intercambio de fichas, que los dispositivos principales utilizan para autorizar las llamadas a AWS los servicios.

  • Un alias de AWS IoT función que apunta a la función 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 cosas existentes para implementar componentes en cada dispositivo cuando esté en línea.

    • Un recurso AWS IoT de políticas. Este recurso puede definir 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 AWS::IoT::Certificate::Id parámetro para adjuntar el certificado al dispositivo principal. Para obtener más información, consulte el ust-in-time aprovisionamiento de J en la Guía para AWS IoT desarrolladores.

  • Un certificado de AWS IoT aprovisionamiento y una clave privada para la plantilla de aprovisionamiento de la flota. 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

    El aprovisionamiento afirma que las claves privadas deben estar protegidas en todo momento, incluso en los dispositivos principales 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 detectas un uso indebido, desactiva 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 la cantidad de dispositivos y los dispositivos que se registran automáticamente en el tuyoCuenta 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 de preaprovisionamiento que compare el ID de un dispositivo con una base de datos para comprobar que el dispositivo tiene permiso de aprovisionamiento. Para obtener más información, consulta los ganchos de aprovisionamiento previo en la Guía para desarrolladores. AWS IoT Core

  • Una 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 flotas.

Crea una función de intercambio de fichas

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 LogsAWS IoT, enviar registros a Amazon CloudWatch Logs y descargar artefactos de componentes personalizados de Amazon S3. Para obtener más información, consulte Autorizar a los dispositivos principales a interactuar con AWS los servicios.

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 fichas de un dispositivo, pero mantener la configuración del dispositivo igual. Para obtener más información, consulte Autorizar llamadas directas a AWS los servicios en la Guía para AWS IoT Coredesarrolladores.

En esta sección, se crea una función de IAM de intercambio de fichas y un alias de AWS IoT función que apunte a esa función. Si ya ha configurado un dispositivo principal de Greengrass, puede utilizar su función de intercambio de fichas y su alias de función en lugar de crear otros nuevos.

Para crear un rol de IAM de intercambio de fichas
  1. Cree una función de IAM que su dispositivo pueda utilizar como función de intercambio de fichas. Haga lo siguiente:

    1. Cree un archivo que contenga el documento de política de confianza que requiere la función de intercambio de tokens.

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

      nano device-role-trust-policy.json

      Copia el siguiente JSON en el archivo.

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

      • Sustituya GreengrassV2 TokenExchangeRole por el nombre del rol de IAM que desee crear.

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

      Si la solicitud se realiza correctamente, la respuesta es similar a la del 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. Cree un archivo que contenga el documento de política de acceso que requiere la función de intercambio de tokens.

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

      nano device-role-access-policy.json

      Copia 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 los componentes de los depósitos de S3. Para implementar componentes personalizados que definan artefactos en Amazon S3, debe añadir permisos al rol para permitir que su dispositivo principal recupere artefactos de componentes. Para obtener más información, consulte Permita el acceso a los depósitos de S3 para los artefactos de los componentes.

      Si aún no tiene un depósito de S3 para los artefactos de los componentes, puede añadir estos permisos más adelante, después de crear un depósito.

    4. Cree la política de IAM a partir del documento de política.

      • Sustituya GreengrassV2 TokenExchangeRoleAccess por el nombre de la política de IAM que desee crear.

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

      Si la solicitud se realiza correctamente, la respuesta es similar a la del 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 a la función de intercambio de fichas.

      • Sustituya GreengrassV2 TokenExchangeRole por el nombre de la función de IAM.

      • Sustituya 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.

    • Sustituya 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 correctamente, la respuesta es similar a la del ejemplo siguiente.

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

    Para crear un alias de rol, debe tener permiso para transferir el rol de IAM de intercambio de fichas. AWS IoT Si recibe un mensaje de error al intentar crear un alias de rol, compruebe que su 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.

Creación de una política de AWS IoT

Después de registrar un dispositivo como una AWS IoT cosa, ese dispositivo puede usar un certificado digital para autenticarseAWS. 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 yAWS 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 nueva AWS IoT política 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 política de AWS IoT
  • 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 permite el iot:AssumeRoleWithCertificate permiso, que permite a sus dispositivos utilizar la función de intercambio de fichas que creó en la sección anterior. Puedes restringir esta política en función de tu caso de uso. Para obtener más información, consulte AWS IoTPolí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 para crear el archivo.

      nano greengrass-v2-iot-policy.json

      Copia 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.

      • Sustituya GreengrassV2IoT por el nombre ThingPolicy 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 correctamente, la respuesta es similar a la del 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" }

Cree una plantilla de aprovisionamiento de flota

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

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

  • Un recurso AWS IoT de políticas. Este recurso puede definir 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 AWS::IoT::Certificate::Id parámetro para adjuntar el certificado al dispositivo principal. Para obtener más información, consulte el ust-in-time aprovisionamiento de J 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 cosas para implementar el software más reciente en cada dispositivo tan pronto como se conecte a Internet. 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 AWS IoT recursos en sus dispositivos 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 IoTproporciona una política gestionada que permite el acceso a todos los permisos que se AWS IoT puedan utilizar al aprovisionar dispositivos. AWSIoTThingsRegistration Puede usar esta política administrada o crear una política personalizada que limite los permisos de la política administrada para su caso de uso.

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

Para crear una plantilla de aprovisionamiento de flotas
  1. Cree una función de IAM que AWS IoT pueda asumir el aprovisionamiento de recursos en su. 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 para crear el archivo.

      nano aws-iot-trust-policy.json

      Copia 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 el documento de política de confianza.

      • GreengrassFleetProvisioningRoleSustitúyalo por el nombre del rol de IAM que desee crear.

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

      Si la solicitud se realiza correctamente, la respuesta es similar a la del ejemplo siguiente.

      { "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 AWSIoTThingsRegistrationpolítica, que permite el acceso a todos los permisos que se AWS IoT puedan utilizar al aprovisionar dispositivos. Puedes usar esta política administrada o crear una política personalizada que defina los permisos restringidos para tu caso de uso. Si decide crear una política personalizada, hágalo ahora.

    4. Adjunte la política de IAM a la función de aprovisionamiento de flota.

      • 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 de IAM 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 preaprovisionamiento, que es una AWS Lambda función que valida los parámetros de plantilla que los dispositivos proporcionan durante el registro. Puedes usar un enlace de preaprovisionamiento para tener más control sobre qué dispositivos y cuántos están integrados en tu dispositivo. Cuenta de AWS Para obtener más información, consulta los ganchos de aprovisionamiento previo en la Guía para desarrolladores. 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 para crear el archivo.

      nano greengrass-fleet-provisioning-template.json

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

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

      • La cosa es un miembro del grupo de cosas que se especifica en el parámetro ThingGroupName de plantilla. El grupo de cosas debe existir en suCuenta de AWS.

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

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

      { "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 MyCertificateson nombres arbitrarios que identifican cada especificación de recursos de la plantilla de aprovisionamiento de flotas. AWS IoTno utiliza estos nombres en los recursos que crea a partir de la plantilla. Puede utilizar estos nombres o sustituirlos por valores que le ayuden a identificar cada recurso de la plantilla.

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

      • GreengrassFleetProvisioningTemplateSustitúyala por el nombre de la plantilla que desee crear.

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

      • Sustituya el ARN del rol de aprovisionamiento por el ARN del rol que 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 ha creado un enlace de preaprovisionamiento, especifique el ARN de la función Lambda del enlace de preaprovisionamiento con el argumento. --pre-provisioning-hook

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

      La respuesta es similar a la del siguiente ejemplo, si la solicitud se realiza correctamente.

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

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

Los certificados de reclamación son certificados X.509 que permiten que los dispositivos se registren como AWS IoT cosas y recuperen 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 AWS IoT política.

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

importante

El aprovisionamiento afirma que las claves privadas deben estar protegidas en todo momento, incluso en los dispositivos principales 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 detectas un uso indebido, desactiva 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 la cantidad de dispositivos y los dispositivos que se registran automáticamente en el tuyoCuenta 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 de preaprovisionamiento que compare el ID de un dispositivo con una base de datos para comprobar que el dispositivo tiene permiso de aprovisionamiento. Para obtener más información, consulta los ganchos de aprovisionamiento previo en la Guía para desarrolladores. AWS IoT Core

Para crear un certificado de notificació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 IoTproporciona 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 flota. La siguiente política permite el acceso 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. 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 para crear el archivo.

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

      Copia el siguiente JSON en el archivo.

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

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

      • Sustituya cada instancia de GreengrassFleetProvisioningTemplatepor 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 correctamente, la respuesta es similar a la del ejemplo siguiente.

      { "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 notificació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.