Connect los dispositivos cliente a los dispositivos principales - 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.

Connect los dispositivos cliente a los dispositivos principales

Puede configurar la detección en la nube para conectar los dispositivos cliente a los dispositivos principales. Al configurar la detección en la nube, los dispositivos cliente se pueden conectar al servicio AWS IoT Greengrass en la nube para recuperar información sobre los dispositivos principales a los que se pueden conectar. A continuación, los dispositivos cliente pueden intentar conectarse a cada dispositivo principal hasta que se conecten correctamente.

Para usar la detección en la nube, debe hacer lo siguiente:

  • Asocie los dispositivos cliente a los dispositivos principales a los que se pueden conectar.

  • Especifique los puntos finales del broker MQTT donde los dispositivos cliente se pueden conectar a cada dispositivo principal.

  • Implemente componentes en el dispositivo principal que permitan la compatibilidad con los dispositivos cliente.

    También puede implementar componentes opcionales para hacer lo siguiente:

    • Retransmita mensajes entre los dispositivos cliente, los componentes de Greengrass y el servicio AWS IoT Core en la nube.

    • Administre automáticamente los terminales MQTT Broker de los dispositivos principales por usted.

    • Gestione las sombras de los dispositivos clientes locales y sincronice las sombras con el servicio en la nubeAWS IoT Core.

También debe revisar y actualizar la AWS IoT política del dispositivo principal para comprobar que tiene los permisos necesarios para conectar los dispositivos cliente. Para obtener más información, consulte Requisitos.

Después de configurar la detección en la nube, puede probar las comunicaciones entre un dispositivo cliente y un dispositivo principal. Para obtener más información, consulte Pruebe las comunicaciones del dispositivo cliente.

Requisitos

Para conectar los dispositivos cliente a un dispositivo principal, debe disponer de lo siguiente:

Configurar el rol de servicio de Greengrass

El rol de servicio de Greengrass es un rol de servicio de AWS Identity and Access Management (IAM) que autoriza a AWS IoT Greengrass a acceder a recursos de servicios de AWS en su nombre. Esta función permite verificar la identidad de AWS IoT Greengrass los dispositivos cliente y administrar la información de conectividad de los dispositivos principales.

Si no ha configurado anteriormente la función de servicio de Greengrass en esta región, debe asociarle una función de servicio de Greengrass en esta región. AWS IoT Greengrass Cuenta de AWS

Cuando utiliza la página Configurar la detección de dispositivos principales de la AWS IoT Greengrassconsola, AWS IoT Greengrass configura el rol de servicio Greengrass automáticamente. De lo contrario, puede configurarlo manualmente mediante la AWS IoTconsola o la AWS IoT Greengrass API.

En esta sección, comprueba si el rol de servicio de Greengrass está configurado. Si no está configurado, crea un nuevo rol de servicio de Greengrass AWS IoT Greengrass para asociarlo con usted Cuenta de AWS en esta región.

  1. Compruebe si la función de servicio de Greengrass está asociada AWS IoT Greengrass a su función Cuenta de AWS en esta región. Haga lo siguiente:

    1. Vaya a la consola de AWS IoT.

    2. En el panel de navegación, seleccione Configuración.

    3. En la sección Función de servicio de Greengrass, busque Función de servicio actual para ver si hay una función de servicio de Greengrass asociada.

      Si tiene un rol de servicio de Greengrass asociado, cumple con este requisito para usar el componente de detector de IP. Vaya a Configure la política de AWS IoT cosas.

  2. Si el rol de servicio de Greengrass no está asociado AWS IoT Greengrass para usted Cuenta de AWS en esta región, cree un rol de servicio de Greengrass y asócielo. Haga lo siguiente:

    1. Vaya a la consola de IAM.

    2. Elija Roles.

    3. Elija Crear rol.

    4. En la página Crear rol, haga lo siguiente:

      1. En Tipo de entidad de confianza, elija Servicio de AWS.

      2. En Caso de uso, Casos de uso para otros Servicios de AWS, elige Greengrass y selecciona Greengrass. Esta opción especifica agregar una entidad AWS IoT Greengrass de confianza que pueda asumir esta función.

      3. Elija Siguiente.

      4. En Políticas de permisos, seleccione la AWSGreengrassResourceAccessRolePolicyque desee adjuntar a la función.

      5. Elija Siguiente.

      6. En Nombre del rol, introduzca un nombre para el rol, comoGreengrass_ServiceRole.

      7. Elija Crear rol.

    5. Vaya a la consola de AWS IoT.

    6. En el panel de navegación, seleccione Configuración.

    7. En la sección Función de servicio de Greengrass, elija Adjuntar función.

    8. En el modal Actualizar rol de servicio Greengrass, seleccione el rol de IAM que creó y, a continuación, elija Adjuntar rol.

  1. Compruebe si la función de servicio de Greengrass está asociada AWS IoT Greengrass a su función Cuenta de AWS en esta región.

    aws greengrassv2 get-service-role-for-account

    Si el rol de servicio de Greengrass está asociado, la operación devuelve una respuesta que contiene información sobre el rol.

    Si tiene un rol de servicio de Greengrass asociado, cumple con este requisito para usar el componente de detector de IP. Vaya a Configure la política de AWS IoT cosas.

  2. Si el rol de servicio de Greengrass no está asociado AWS IoT Greengrass para usted Cuenta de AWS en esta región, cree un rol de servicio de Greengrass y asócielo. Haga lo siguiente:

    1. Cree el rol con una política de confianza que permita a AWS IoT Greengrass asumir el rol. Este ejemplo crea un rol denominado Greengrass_ServiceRole, pero puede utilizar un nombre distinto. Le recomendamos que incluya también las claves de contexto de condición global aws:SourceArn y aws:SourceAccount en su política de confianza para ayudar a prevenir el problema de seguridad del suplente confuso. Las claves de contexto de condición restringen el acceso para permitir solo las solicitudes que provienen de la cuenta especificada y del espacio de trabajo de Greengrass. Para obtener más información sobre el problema del suplente confuso, consulte Prevención del suplente confuso entre servicios.

      Linux or Unix
      aws iam create-role --role-name Greengrass_ServiceRole --assume-role-policy-document '{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "greengrass.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "ArnLike": { "aws:SourceArn": "arn:aws:greengrass:region:account-id:*" }, "StringEquals": { "aws:SourceAccount": "account-id" } } } ] }'
      Windows Command Prompt (CMD)
      aws iam create-role --role-name Greengrass_ServiceRole --assume-role-policy-document "{\\"Version\\":\\"2012-10-17\\",\\"Statement\\":[{\\"Effect\\":\\"Allow\\",\\"Principal\\":{\\"Service\\":\\"greengrass.amazonaws.com\\"},\\"Action\\":\\"sts:AssumeRole\\",\\"Condition\\":{\\"ArnLike\\":{\\"aws:SourceArn\\":\\"arn:aws:greengrass:region:account-id:*\\"},\\"StringEquals\\":{\\"aws:SourceAccount\\":\\"account-id\\"}}}]}"
      PowerShell
      aws iam create-role --role-name Greengrass_ServiceRole --assume-role-policy-document '{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "greengrass.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "ArnLike": { "aws:SourceArn": "arn:aws:greengrass:region:account-id:*" }, "StringEquals": { "aws:SourceAccount": "account-id" } } } ] }'
    2. Copie el ARN del rol de los metadatos del rol en la salida. Puede utilizar el ARN para asociar el rol a su cuenta.

    3. Asocie la política de AWSGreengrassResourceAccessRolePolicy al rol.

      aws iam attach-role-policy --role-name Greengrass_ServiceRole --policy-arn arn:aws:iam::aws:policy/service-role/AWSGreengrassResourceAccessRolePolicy
    4. Asocie la función de servicio de Greengrass con AWS IoT Greengrass su. Cuenta de AWS Sustituya role-arn por el ARN del rol de servicio.

      aws greengrassv2 associate-service-role-to-account --role-arn role-arn

      La operación devuelve la siguiente respuesta si tiene éxito.

      { "associatedAt": "timestamp" }

Configure la política de AWS IoT cosas

Los dispositivos principales utilizan certificados de dispositivo X.509 para autorizar las conexiones. AWS Debe adjuntar AWS IoT políticas a los certificados de los dispositivos para definir los permisos de un dispositivo principal. Para obtener más información, consulte Políticas de AWS IoT para operaciones de plano de datos y AWS IoTPolítica mínima de compatibilidad con los dispositivos cliente.

Para conectar los dispositivos cliente a un dispositivo principal, la AWS IoT política del dispositivo principal debe permitir los siguientes permisos:

En esta sección, revisará AWS IoT las políticas de su dispositivo principal y agregará los permisos necesarios que falten. Si utilizaste el instalador del software AWS IoT Greengrass principal para aprovisionar recursos, tu dispositivo principal tiene una AWS IoT política que permite el acceso a todas AWS IoT Greengrass las acciones (greengrass:*). En este caso, solo debe actualizar la AWS IoT política si planea implementar el componente de administrador de sombras para sincronizar las sombras de los dispositivos con élAWS IoT Core. De lo contrario, puedes saltarte esta sección.

  1. En el menú de navegación de la AWS IoT Greengrassconsola, selecciona Dispositivos principales.

  2. En la página de dispositivos principales, selecciona el dispositivo principal que deseas actualizar.

  3. En la página de detalles del dispositivo principal, selecciona el enlace al dispositivo principal. Este enlace abre la página de detalles del dispositivo en la AWS IoT consola.

  4. En la página de detalles de la cosa, selecciona Certificados.

  5. En la pestaña Certificados, selecciona el certificado activo del objeto.

  6. En la página de detalles del certificado, selecciona Políticas.

  7. En la pestaña Políticas, elija la AWS IoT política que desee revisar y actualizar. Puede añadir los permisos necesarios a cualquier política que esté asociada al certificado activo del dispositivo principal.

    nota

    Si usó el instalador de software AWS IoT Greengrass Core para aprovisionar recursos, tiene dos AWS IoT políticas. Le recomendamos que elija la política nombrada GreengrassV2IoTThingPolicy, si existe. Los dispositivos principales que cree con el instalador rápido utilizan este nombre de política de forma predeterminada. Si agrega permisos a esta política, también los otorga a otros dispositivos principales que usan esta política.

  8. En la descripción general de la política, selecciona Editar la versión activa.

  9. Revisa la política para ver los permisos necesarios y añade los permisos necesarios que falten.

  10. (Opcional) Para permitir que el dispositivo principal se sincronice con las sombrasAWS IoT Core, añada la siguiente declaración a la política. Si planea interactuar con las sombras de los dispositivos cliente, pero no sincronizarlas con ellasAWS IoT Core, omita este paso. Sustituye la región y el identificador de cuenta por la región que utilizas y tu Cuenta de AWS número.

    • Esta afirmación de ejemplo permite acceder a todas las sombras de los dispositivos. Para seguir las mejores prácticas de seguridad, puede restringir el acceso únicamente al dispositivo principal y a los dispositivos cliente que conecte al dispositivo principal. Para obtener más información, consulte AWS IoTPolítica mínima de compatibilidad con los dispositivos cliente.

    { "Effect": "Allow", "Action": [ "iot:GetThingShadow", "iot:UpdateThingShadow", "iot:DeleteThingShadow" ], "Resource": [ "arn:aws:iot:region:account-id:thing/*" ] }

    Tras añadir esta declaración, el documento de política podría tener un aspecto similar al del siguiente ejemplo.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iot:Connect", "iot:Publish", "iot:Subscribe", "iot:Receive", "greengrass:*" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "iot:GetThingShadow", "iot:UpdateThingShadow", "iot:DeleteThingShadow" ], "Resource": [ "arn:aws:iot:region:account-id:thing/*" ] } ] }
  11. Para establecer una nueva versión de la política como la versión activa, en Estado de la versión de la política, seleccione Establecer la versión editada como la versión activa de esta política.

  12. Seleccione Guardar como versión nueva.

  1. Enumere los principios del AWS IoT dispositivo principal. Los elementos principales pueden ser certificados de dispositivo X.509 u otros identificadores. Ejecute el siguiente comando y MyGreengrassCoresustitúyalo por el nombre del dispositivo principal.

    aws iot list-thing-principals --thing-name MyGreengrassCore

    La operación devuelve una respuesta en la que se enumeran los elementos principales del dispositivo principal.

    { "principals": [ "arn:aws:iot:us-west-2:123456789012:cert/certificateId" ] }
  2. Identifique el certificado activo del dispositivo principal. Ejecute el siguiente comando y sustituya CertificateID por el ID de cada certificado del paso anterior hasta que encuentre el certificado activo. El identificador del certificado es la cadena hexadecimal situada al final del ARN del certificado. El --query argumento especifica que solo se muestre el estado del certificado.

    aws iot describe-certificate --certificate-id certificateId --query 'certificateDescription.status'

    La operación devuelve el estado del certificado en forma de cadena. Por ejemplo, si el certificado está activo, se genera esta operación"ACTIVE".

  3. Enumere las AWS IoT políticas que se adjuntan al certificado. Ejecute el siguiente comando y sustituya el ARN del certificado por el ARN del certificado.

    aws iot list-principal-policies --principal arn:aws:iot:us-west-2:123456789012:cert/certificateId

    La operación devuelve una respuesta en la que se enumeran las AWS IoT políticas adjuntas al certificado.

    { "policies": [ { "policyName": "GreengrassTESCertificatePolicyMyGreengrassCoreTokenExchangeRoleAlias", "policyArn": "arn:aws:iot:us-west-2:123456789012:policy/GreengrassTESCertificatePolicyMyGreengrassCoreTokenExchangeRoleAlias" }, { "policyName": "GreengrassV2IoTThingPolicy", "policyArn": "arn:aws:iot:us-west-2:123456789012:policy/GreengrassV2IoTThingPolicy" } ] }
  4. Elija la política que desee ver y actualizar.

    nota

    Si ha utilizado el instalador de software AWS IoT Greengrass principal para aprovisionar recursos, tiene dos AWS IoT políticas. Le recomendamos que elija la política nombrada GreengrassV2IoTThingPolicy, si existe. Los dispositivos principales que cree con el instalador rápido utilizan este nombre de política de forma predeterminada. Si agrega permisos a esta política, también los otorga a otros dispositivos principales que usan esta política.

  5. Obtenga el documento de la política. Ejecute el siguiente comando y sustituya GreengrassV2IoT por el nombre ThingPolicy de la política.

    aws iot get-policy --policy-name GreengrassV2IoTThingPolicy

    La operación devuelve una respuesta que contiene el documento de la política y otra información sobre la política. El documento de política es un objeto JSON serializado como una cadena.

    { "policyName": "GreengrassV2IoTThingPolicy", "policyArn": "arn:aws:iot:us-west-2:123456789012:policy/GreengrassV2IoTThingPolicy", "policyDocument": "{\ \\"Version\\": \\"2012-10-17\\",\ \\"Statement\\": [\ {\ \\"Effect\\": \\"Allow\\",\ \\"Action\\": [\ \\"iot:Connect\\",\ \\"iot:Publish\\",\ \\"iot:Subscribe\\",\ \\"iot:Receive\\",\ \\"greengrass:*\\"\ ],\ \\"Resource\\": \\"*\\"\ }\ ]\ }", "defaultVersionId": "1", "creationDate": "2021-02-05T16:03:14.098000-08:00", "lastModifiedDate": "2021-02-05T16:03:14.098000-08:00", "generationId": "f19144b798534f52c619d44f771a354f1b957dfa2b850625d9f1d0fde530e75f" }
  6. Utilice un conversor en línea u otra herramienta para convertir la cadena del documento de política en un objeto JSON y, a continuación, guárdela en un archivo denominadoiot-policy.json.

    Por ejemplo, si tiene instalada la herramienta jq, puede ejecutar el siguiente comando para obtener el documento de política, convertirlo en un objeto JSON y guardar el documento de política como un objeto JSON.

    aws iot get-policy --policy-name GreengrassV2IoTThingPolicy --query 'policyDocument' | jq fromjson >> iot-policy.json
  7. Revise la política para ver los permisos necesarios y añada los permisos necesarios que falten.

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

    nano iot-policy.json
  8. Guarde los cambios como una nueva versión de la política. Ejecute el siguiente comando y sustituya GreengrassV2IoT por el nombre ThingPolicy de la política.

    aws iot create-policy-version --policy-name GreengrassV2IoTThingPolicy --policy-document file://iot-policy.json --set-as-default

    La operación devuelve una respuesta similar a la del siguiente ejemplo si tiene éxito.

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

Componentes de Greengrass para soporte de dispositivos cliente

importante

El dispositivo principal debe ejecutar Greengrass nucleus v2.2.0 o posterior para que sea compatible con los dispositivos cliente.

Para permitir que los dispositivos cliente se conecten y se comuniquen con un dispositivo principal, debe implementar los siguientes componentes de Greengrass en el dispositivo principal:

  • Autenticación del dispositivo cliente (aws.greengrass.clientdevices.Auth)

    Implemente el componente de autenticación del dispositivo cliente para autenticar los dispositivos cliente y autorizar las acciones de los dispositivos cliente. Este componente permite que sus AWS IoT cosas se conecten a un dispositivo principal.

    Este componente requiere alguna configuración para poder usarlo. Debe especificar los grupos de dispositivos cliente y las operaciones que cada grupo está autorizado a realizar, como conectarse y comunicarse a través de MQTT. Para obtener más información, consulte la configuración del componente de autenticación del dispositivo cliente.

  • Bróker MQTT 3.1.1 (Moquette) (aws.greengrass.clientdevices.mqtt.Moquette)

    Implemente el componente de broker MQTT de Moquette para ejecutar un broker MQTT ligero. El broker MQTT de Moquette es compatible con MQTT 3.1.1 e incluye soporte local para QoS 0, QoS 1, QoS 2, mensajes retenidos, mensajes de última voluntad y suscripciones persistentes.

    No es necesario configurar este componente para usarlo. Sin embargo, puede configurar el puerto en el que este componente opera el broker MQTT. De forma predeterminada, utiliza el puerto 8883.

  • Bróker MQTT 5 (EMQX) (aws.greengrass.clientdevices.mqtt.EMQX)

    nota

    Para usar el broker EMQX MQTT 5, debe usar Greengrass nucleus v2.6.0 o posterior y la autenticación del dispositivo cliente v2.2.0 o posterior.

    Implemente el componente intermediario MQTT de EMQX para utilizar las funciones de MQTT 5.0 en la comunicación entre los dispositivos cliente y el dispositivo principal. El broker MQTT de EMQX es compatible con MQTT 5.0 e incluye soporte para los intervalos de caducidad de las sesiones y los mensajes, las propiedades de los usuarios, las suscripciones compartidas, los alias de los temas y mucho más.

    No es necesario configurar este componente para usarlo. Sin embargo, puede configurar el puerto en el que este componente opera el broker MQTT. De forma predeterminada, utiliza el puerto 8883.

  • Puente MQTT (aws.greengrass.clientdevices.mqtt.Bridge)

    (Opcional) Implemente el componente de puente MQTT para retransmitir mensajes entre los dispositivos cliente (MQTT local), la publicación/suscripción local y el MQTT. AWS IoT Core Configure este componente para sincronizar los dispositivos cliente AWS IoT Core e interactuar con los dispositivos cliente de los componentes de Greengrass.

    Para poder utilizar este componente, es necesario configurarlo. Debe especificar las asignaciones de temas en las que este componente transmite los mensajes. Para obtener más información, consulte Configuración del componente del puente MQTT.

  • Detector de IP (aws.greengrass.clientdevices.IPDetector)

    (Opcional) Implemente el componente detector de IP para informar automáticamente al servicio en la nube de los puntos finales del agente MQTT del AWS IoT Greengrass dispositivo principal. No puede usar este componente si tiene una configuración de red compleja, como una en la que un router reenvía el puerto intermediario MQTT al dispositivo principal.

    No es necesario configurar este componente para usarlo.

  • Gestor en la sombra (aws.greengrass.ShadowManager)

    (Opcional) Implemente el componente administrador de sombras para gestionar las sombras de los dispositivos cliente en el dispositivo principal. Los componentes de Greengrass pueden obtener, actualizar y eliminar las sombras de los dispositivos cliente para interactuar con los dispositivos cliente. También puede configurar el componente administrador de sombras para sincronizar las sombras de los dispositivos cliente con el servicio AWS IoT Core en la nube.

    Para utilizar este componente con las sombras de los dispositivos cliente, debe configurar el componente puente MQTT para que retransmita los mensajes entre los dispositivos cliente y el administrador de sombras, que utiliza la función de publicación/suscripción local. De lo contrario, no es necesario configurar este componente para su uso, pero sí para sincronizar las sombras de los dispositivos.

nota

Se recomienda implementar solo un componente de broker de MQTT. Los componentes MQTT bridge y IP detector solo funcionan con un componente intermediario MQTT a la vez. Si despliega varios componentes de broker de MQTT, debe configurarlos para que utilicen puertos diferentes.

Configure la detección en la nube (consola)

Puede usar la AWS IoT Greengrass consola para asociar los dispositivos cliente, administrar los puntos finales de los dispositivos principales e implementar componentes para habilitar la compatibilidad con los dispositivos cliente. Para obtener más información, consulte Paso 2: Habilita la compatibilidad con los dispositivos cliente.

Configure la detección en la nube () AWS CLI

Puede usar AWS Command Line Interface (AWS CLI) para asociar los dispositivos cliente, administrar los puntos finales de los dispositivos principales e implementar componentes para habilitar la compatibilidad con los dispositivos cliente. Para obtener más información, consulte los siguientes temas: