Connect les appareils clients aux appareils principaux - AWS IoT Greengrass

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Connect les appareils clients aux appareils principaux

Vous pouvez configurer Cloud Discovery pour connecter les appareils clients aux appareils principaux. Lorsque vous configurez la découverte du cloud, les appareils clients peuvent se connecter au service AWS IoT Greengrass cloud pour récupérer des informations sur les principaux appareils auxquels ils peuvent se connecter. Les appareils clients peuvent ensuite tenter de se connecter à chaque périphérique principal jusqu'à ce qu'ils se connectent correctement.

Pour utiliser Cloud Discovery, vous devez effectuer les opérations suivantes :

  • Associez les appareils clients aux appareils principaux auxquels ils peuvent se connecter.

  • Spécifiez les points de terminaison du broker MQTT auxquels les appareils clients peuvent se connecter à chaque périphérique principal.

  • Déployez des composants sur le périphérique principal qui permettent la prise en charge des appareils clients.

    Vous pouvez également déployer des composants facultatifs pour effectuer les opérations suivantes :

    • Relayez les messages entre les appareils clients, les composants Greengrass et le service AWS IoT Core cloud.

    • Gérez automatiquement pour vous les points de terminaison du broker MQTT du périphérique principal.

    • Gérez les ombres des appareils clients locaux et synchronisez les ombres avec le service AWS IoT Core cloud.

Vous devez également revoir et mettre à jour la AWS IoT politique de l'appareil principal afin de vérifier qu'il dispose des autorisations requises pour connecter les appareils clients. Pour plus d’informations, consultez Prérequis.

Après avoir configuré Cloud Discovery, vous pouvez tester les communications entre un appareil client et un appareil principal. Pour plus d’informations, consultez Tester les communications entre appareils clients.

Prérequis

Pour connecter des appareils clients à un appareil principal, vous devez disposer des éléments suivants :

Configurer le rôle de service Greengrass

Le rôle de service Greengrass est un rôle de service AWS Identity and Access Management (IAM) qui autorise l'accès AWS IoT Greengrass aux ressources des AWS services en votre nom. Ce rôle permet de vérifier l'identité AWS IoT Greengrass des appareils clients et de gérer les informations de connectivité de base des appareils.

Si vous n'avez pas encore configuré le rôle de service Greengrass dans cette région, vous devez associer un rôle de service Greengrass à votre Compte AWS rôle de service dans cette région. AWS IoT Greengrass

Lorsque vous utilisez la page Configurer la découverte des appareils principaux de la AWS IoT Greengrassconsole, vous AWS IoT Greengrass configurez le rôle de service Greengrass pour vous. Sinon, vous pouvez le configurer manuellement à l'aide de la AWS IoTconsole ou de AWS IoT Greengrass l'API.

Dans cette section, vous allez vérifier si le rôle de service Greengrass est configuré. S'il n'est pas configuré, vous créez un nouveau rôle de service Greengrass auquel vous pourrez vous associer AWS IoT Greengrass Compte AWS dans cette région.

  1. Vérifiez si le rôle de service Greengrass vous est associé AWS IoT Greengrass Compte AWS dans cette région. Procédez comme suit :

    1. Accédez à la console AWS IoT.

    2. Dans le panneau de navigation, sélectionnez Settings (Paramètres).

    3. Dans la section Rôle de service Greengrass, recherchez Rôle de service actuel pour voir si un rôle de service Greengrass est associé.

      Si un rôle de service Greengrass est associé, vous répondez à cette exigence pour utiliser le composant détecteur IP. Passez à Configuration de la AWS IoT politique des objets.

  2. Si le rôle de service Greengrass n'est pas associé à votre AWS IoT Greengrass compte Compte AWS dans cette région, créez un rôle de service Greengrass et associez-le. Procédez comme suit :

    1. Accédez à la Console IAM.

    2. Sélectionnez Roles.

    3. Sélectionnez Créer un rôle.

    4. Sur la page Créer un rôle, procédez comme suit :

      1. Sous Type d'entité de confiance, sélectionnez AWS service.

      2. Sous Cas d'utilisation, Cas d'utilisation pour les autres AWS services, choisissez Greengrass, sélectionnez Greengrass. Cette option indique d'ajouter AWS IoT Greengrass en tant qu'entité de confiance capable d'assumer ce rôle.

      3. Choisissez Suivant.

      4. Sous Politiques d'autorisations, sélectionnez le AWSGreengrassResourceAccessRolePolicyà associer au rôle.

      5. Choisissez Suivant.

      6. Dans Nom du rôle, entrez le nom du rôle, tel queGreengrass_ServiceRole.

      7. Sélectionnez Créer un rôle.

    5. Accédez à la console AWS IoT.

    6. Dans le panneau de navigation, sélectionnez Settings (Paramètres).

    7. Dans la section Rôle de service Greengrass, choisissez Attacher un rôle.

    8. Dans le mode Update Greengrass Service Role, sélectionnez le rôle IAM que vous avez créé, puis choisissez Attacher un rôle.

  1. Vérifiez si le rôle de service Greengrass vous est associé AWS IoT Greengrass Compte AWS dans cette région.

    aws greengrassv2 get-service-role-for-account

    Si le rôle de service Greengrass est associé, l'opération renvoie une réponse contenant des informations sur le rôle.

    Si un rôle de service Greengrass est associé, vous répondez à cette exigence pour utiliser le composant détecteur IP. Passez à Configuration de la AWS IoT politique des objets.

  2. Si le rôle de service Greengrass n'est pas associé à votre AWS IoT Greengrass compte Compte AWS dans cette région, créez un rôle de service Greengrass et associez-le. Procédez comme suit :

    1. Créez le rôle avec une stratégie d'approbation permettant à AWS IoT Greengrass d'assumer le rôle. Cet exemple crée un rôle nommé Greengrass_ServiceRole, mais vous pouvez utiliser un autre nom. Nous vous recommandons également d'inclure les clés aws:SourceArn contextuelles et les clés de contexte de condition aws:SourceAccount globale dans votre politique de confiance afin d'éviter tout problème de sécurité secondaire confus. Les clés contextuelles de condition limitent l'accès pour autoriser uniquement les demandes provenant du compte spécifié et de l'espace de travail Greengrass. Pour plus d’informations sur le problème de l'adjoint confus, consultez Prévention du problème de l'adjoint confus entre services.

      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. Copiez l'ARN de rôle du rôle des métadonnées dans la sortie. Vous utilisez l'ARN pour associer le rôle à votre compte.

    3. Attachez la stratégie AWSGreengrassResourceAccessRolePolicy au rôle.

      aws iam attach-role-policy --role-name Greengrass_ServiceRole --policy-arn arn:aws:iam::aws:policy/service-role/AWSGreengrassResourceAccessRolePolicy
    4. Associez le rôle de service Greengrass à AWS IoT Greengrass votre. Compte AWS Remplacez role-arn par l'ARN du rôle de service.

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

      L'opération renvoie la réponse suivante en cas de succès.

      { "associatedAt": "timestamp" }

Configuration de la AWS IoT politique des objets

Les appareils principaux utilisent des certificats de périphérique X.509 pour autoriser les connexions àAWS. Vous associez AWS IoT des politiques aux certificats d'appareil afin de définir les autorisations pour un appareil principal. Pour plus d’informations, consultez Stratégies AWS IoT pour les opérations de plan de données et AWS IoTPolitique minimale de prise en charge des appareils clients.

Pour connecter des appareils clients à un appareil principal, la AWS IoT politique du périphérique principal doit autoriser les autorisations suivantes :

Dans cette section, vous passez en revue les AWS IoT politiques de votre appareil principal et ajoutez les autorisations requises manquantes. Si vous avez utilisé le programme d'installation du logiciel AWS IoT Greengrass Core pour provisionner des ressources, votre appareil principal dispose d'une AWS IoT politique qui autorise l'accès à toutes les AWS IoT Greengrass actions (greengrass:*). Dans ce cas, vous devez mettre à jour la AWS IoT politique uniquement si vous prévoyez de déployer le composant Shadow Manager avec lequel synchroniser les ombres de l'appareilAWS IoT Core. Sinon, vous pouvez ignorer cette section.

  1. Dans le menu de navigation de la AWS IoT Greengrassconsole, choisissez Core devices.

  2. Sur la page des appareils principaux, choisissez le périphérique principal à mettre à jour.

  3. Sur la page de détails de l'appareil principal, choisissez le lien vers l'objet de l'appareil principal. Ce lien ouvre la page des détails de l'objet dans la AWS IoT console.

  4. Sur la page des détails de l'objet, sélectionnez Certificats.

  5. Dans l'onglet Certificats, choisissez le certificat actif de l'objet.

  6. Sur la page des détails du certificat, sélectionnez Policies.

  7. Dans l'onglet Politiques, choisissez la AWS IoT politique à revoir et à mettre à jour. Vous pouvez ajouter les autorisations requises à n'importe quelle politique associée au certificat actif de l'appareil principal.

    Note

    Si vous avez utilisé le programme d'installation du logiciel AWS IoT Greengrass Core pour provisionner des ressources, vous avez deux AWS IoT règles. Nous vous recommandons de choisir la politique nommée GreengrassV2IoTThingPolicy, si elle existe. Les appareils principaux que vous créez avec le programme d'installation rapide utilisent ce nom de politique par défaut. Si vous ajoutez des autorisations à cette politique, vous les accordez également aux autres appareils principaux qui utilisent cette politique.

  8. Dans l'aperçu des politiques, choisissez Modifier la version active.

  9. Passez en revue la politique relative aux autorisations requises et ajoutez les autorisations requises manquantes.

  10. (Facultatif) Pour autoriser le périphérique principal à synchroniser les ombres avecAWS IoT Core, ajoutez l'instruction suivante à la politique. Si vous prévoyez d'interagir avec les ombres de l'appareil client sans les synchroniserAWS IoT Core, ignorez cette étape. Remplacez la région et l'identifiant du compte par la région que vous utilisez et votre Compte AWS numéro.

    • Cet exemple d'instruction permet d'accéder aux ombres de tous les appareils. Pour suivre les meilleures pratiques de sécurité, vous pouvez restreindre l'accès uniquement au périphérique principal et aux appareils clients que vous connectez au périphérique principal. Pour plus d’informations, consultez AWS IoTPolitique minimale de prise en charge des appareils clients.

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

    Après avoir ajouté cette déclaration, le document de politique peut ressembler à l'exemple suivant.

    { "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. Pour définir une nouvelle version de politique comme version active, sous État de la version de politique, sélectionnez Définir la version modifiée comme version active pour cette politique.

  12. Choisissez Enregistrer en tant que nouvelle version.

  1. Énumérez les principes de base de l'appareilAWS IoT. Les principaux de l'objet peuvent être des certificats de périphérique X.509 ou d'autres identifiants. Exécutez la commande suivante et MyGreengrassCoreremplacez-la par le nom du périphérique principal.

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

    L'opération renvoie une réponse répertoriant les principaux éléments du périphérique principal.

    { "principals": [ "arn:aws:iot:us-west-2:123456789012:cert/certificateId" ] }
  2. Identifiez le certificat actif de l'appareil principal. Exécutez la commande suivante et remplacez CertificateID par l'ID de chaque certificat de l'étape précédente jusqu'à ce que vous trouviez le certificat actif. L'ID du certificat est la chaîne hexadécimale à la fin de l'ARN du certificat. L'--queryargument indique de n'afficher que le statut du certificat.

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

    L'opération renvoie le statut du certificat sous forme de chaîne. Par exemple, si le certificat est actif, cette opération produit des résultats"ACTIVE".

  3. AWS IoTRépertoriez les politiques associées au certificat. Exécutez la commande suivante et remplacez l'ARN du certificat par l'ARN du certificat.

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

    L'opération renvoie une réponse répertoriant les AWS IoT politiques associées au certificat.

    { "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. Choisissez la politique à consulter et à mettre à jour.

    Note

    Si vous avez utilisé le programme d'installation du logiciel AWS IoT Greengrass Core pour provisionner des ressources, vous avez deux AWS IoT règles. Nous vous recommandons de choisir la politique nommée GreengrassV2IoTThingPolicy, si elle existe. Les appareils principaux que vous créez avec le programme d'installation rapide utilisent ce nom de politique par défaut. Si vous ajoutez des autorisations à cette politique, vous les accordez également aux autres appareils principaux qui utilisent cette politique.

  5. Obtenez le document de la politique. Exécutez la commande suivante et remplacez GreengrassV2IoT par le nom ThingPolicy de la politique.

    aws iot get-policy --policy-name GreengrassV2IoTThingPolicy

    L'opération renvoie une réponse contenant le document de la politique et d'autres informations relatives à la politique. Le document de politique est un objet JSON sérialisé sous forme de chaîne.

    { "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. Utilisez un convertisseur en ligne ou un autre outil pour convertir la chaîne du document de politique en objet JSON, puis enregistrez-la dans un fichier nomméiot-policy.json.

    Par exemple, si l'outil jq est installé, vous pouvez exécuter la commande suivante pour obtenir le document de politique, le convertir en objet JSON et enregistrer le document de politique en tant qu'objet JSON.

    aws iot get-policy --policy-name GreengrassV2IoTThingPolicy --query 'policyDocument' | jq fromjson >> iot-policy.json
  7. Passez en revue la politique relative aux autorisations requises et ajoutez les autorisations requises manquantes.

    Par exemple, sur un système basé sur Linux, vous pouvez exécuter la commande suivante pour utiliser GNU nano pour ouvrir le fichier.

    nano iot-policy.json
  8. Enregistrez les modifications en tant que nouvelle version de la politique. Exécutez la commande suivante et remplacez GreengrassV2IoT par le nom ThingPolicy de la politique.

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

    L'opération renvoie une réponse similaire à l'exemple suivant en cas de succès.

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

Composants Greengrass pour le support des appareils clients

Important

Le périphérique principal doit exécuter Greengrass nucleus v2.2.0 ou version ultérieure pour prendre en charge les appareils clients.

Pour permettre aux appareils clients de se connecter et de communiquer avec un appareil principal, vous déployez les composants Greengrass suivants sur le périphérique principal :

  • Authentification de l'appareil client (aws.greengrass.clientdevices.Auth)

    Déployez le composant d'authentification des appareils clients pour authentifier les appareils clients et autoriser les actions des appareils clients. Ce composant permet à vos AWS IoT objets de se connecter à un appareil principal.

    Ce composant nécessite une certaine configuration pour pouvoir être utilisé. Vous devez spécifier les groupes de périphériques clients et les opérations que chaque groupe est autorisé à effectuer, telles que la connexion et la communication via MQTT. Pour plus d'informations, consultez la section Configuration du composant d'authentification de l'appareil client.

  • Courtier MQTT 3.1.1 (Moquette) (aws.greengrass.clientdevices.mqtt.Moquette)

    Déployez le composant de courtier MQTT Moquette pour exécuter un courtier MQTT léger. Le broker Moquette MQTT est conforme à MQTT 3.1.1 et inclut un support local pour QoS 0, QoS 1, QoS 2, les messages conservés, les messages de dernière volonté et les abonnements persistants.

    Vous n'êtes pas obligé de configurer ce composant pour l'utiliser. Cependant, vous pouvez configurer le port sur lequel ce composant fait fonctionner le broker MQTT. Par défaut, il utilise le port 8883.

  • Courtier MQTT 5 (EMQX) (aws.greengrass.clientdevices.mqtt.EMQX)

    Note

    Pour utiliser le broker EMQX MQTT 5, vous devez utiliser Greengrass nucleus v2.6.0 ou version ultérieure et client device auth v2.2.0 ou version ultérieure.

    Déployez le composant broker EMQX MQTT pour utiliser les fonctionnalités MQTT 5.0 dans la communication entre les appareils clients et le périphérique principal. Le broker MQTT EMQX est compatible avec MQTT 5.0 et inclut la prise en charge des intervalles d'expiration des sessions et des messages, des propriétés utilisateur, des abonnements partagés, des alias de rubrique, etc.

    Vous n'êtes pas obligé de configurer ce composant pour l'utiliser. Cependant, vous pouvez configurer le port sur lequel ce composant fait fonctionner le broker MQTT. Par défaut, il utilise le port 8883.

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

    (Facultatif) Déployez le composant pont MQTT pour relayer les messages entre les appareils clients (MQTT local), publiation/abonnement locaux et MQTT. AWS IoT Core Configurez ce composant pour synchroniser les appareils clients avec les appareils clients AWS IoT Core et interagir avec eux à partir des composants Greengrass.

    Ce composant nécessite une configuration pour être utilisé. Vous devez spécifier les mappages de rubriques dans lesquels ce composant relaie les messages. Pour plus d'informations, consultez la section Configuration des composants du pont MQTT.

  • Détecteur IP (aws.greengrass.clientdevices.IPDetector)

    (Facultatif) Déployez le composant de détection IP pour signaler automatiquement les points de terminaison du broker MQTT du périphérique principal au service AWS IoT Greengrass cloud. Vous ne pouvez pas utiliser ce composant si votre configuration réseau est complexe, par exemple si un routeur transmet le port du broker MQTT au périphérique principal.

    Vous n'êtes pas obligé de configurer ce composant pour l'utiliser.

  • Shadow Manager (aws.greengrass.ShadowManager)

    (Facultatif) Déployez le composant Shadow Manager pour gérer les ombres du périphérique client sur le périphérique principal. Les composants Greengrass peuvent obtenir, mettre à jour et supprimer les ombres des appareils clients afin d'interagir avec les appareils clients. Vous pouvez également configurer le composant Shadow Manager pour synchroniser les ombres du périphérique client avec le service AWS IoT Core cloud.

    Pour utiliser ce composant avec les ombres des périphériques clients, vous devez configurer le composant du pont MQTT pour relayer les messages entre les appareils clients et le gestionnaire des ombres, qui utilise la publication et l'abonnement locaux. Dans le cas contraire, ce composant ne nécessite pas de configuration pour être utilisé, mais il nécessite une configuration pour synchroniser les ombres des appareils.

Note

Nous vous recommandons de ne déployer qu'un seul composant de broker MQTT. Le pont MQTT et les composants du détecteur IP fonctionnent avec un seul composant de courtier MQTT à la fois. Si vous déployez plusieurs composants du broker MQTT, vous devez les configurer pour utiliser différents ports.

Configuration de la découverte du cloud (console)

Vous pouvez utiliser la AWS IoT Greengrass console pour associer des appareils clients, gérer les points de terminaison des appareils principaux et déployer des composants afin de permettre la prise en charge des appareils clients. Pour plus d’informations, consultez Étape 2 : activer la prise en charge des appareils clients.

Configurer la découverte du cloud (AWS CLI)

Vous pouvez utiliser le AWS Command Line Interface (AWS CLI) pour associer des appareils clients, gérer les points de terminaison des appareils principaux et déployer des composants afin de permettre la prise en charge des appareils clients. Pour plus d’informations, consultez les ressources suivantes :