Connect i dispositivi client ai dispositivi principali - AWS IoT Greengrass

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Connect i dispositivi client ai dispositivi principali

Puoi configurare il cloud discovery per connettere i dispositivi client ai dispositivi principali. Quando configuri il cloud discovery, i dispositivi client possono connettersi al servizio AWS IoT Greengrass cloud per recuperare informazioni sui dispositivi principali a cui possono connettersi. Quindi, i dispositivi client possono tentare di connettersi a ciascun dispositivo principale fino a quando non si connettono correttamente.

Per utilizzare cloud discovery, devi fare quanto segue:

  • Associa i dispositivi client ai dispositivi principali a cui possono connettersi.

  • Specificate gli endpoint del broker MQTT a cui i dispositivi client possono connettersi a ciascun dispositivo principale.

  • Implementa i componenti sul dispositivo principale che abilitano il supporto per i dispositivi client.

    Puoi anche distribuire componenti opzionali per effettuare le seguenti operazioni:

    • Inoltra i messaggi tra i dispositivi client, i componenti Greengrass e AWS IoT Core il servizio cloud.

    • Gestisci automaticamente gli endpoint del broker MQTT dei dispositivi principali per te.

    • Gestisci le ombre dei dispositivi client locali e sincronizza le ombre con il servizio cloud. AWS IoT Core

È inoltre necessario rivedere e aggiornare la AWS IoT politica del dispositivo principale per verificare che disponga delle autorizzazioni necessarie per connettere i dispositivi client. Per ulteriori informazioni, consulta Requisiti.

Dopo aver configurato il cloud discovery, puoi testare le comunicazioni tra un dispositivo client e un dispositivo principale. Per ulteriori informazioni, consulta Verifica le comunicazioni con i dispositivi client.

Requisiti

Per connettere i dispositivi client a un dispositivo principale, è necessario disporre di quanto segue:

Configurazione del ruolo del servizio Greengrass

Il ruolo di servizio Greengrass è un ruolo di servizio AWS Identity and Access Management (IAM) che AWS IoT Greengrass autorizza l'accesso alle risorse AWS dei servizi per conto dell'utente. Questo ruolo consente di AWS IoT Greengrass verificare l'identità dei dispositivi client e gestire le informazioni principali sulla connettività dei dispositivi.

Se non hai precedentemente impostato il ruolo di servizio Greengrass in questa regione, devi associare un ruolo di servizio Greengrass a un ruolo di servizio Greengrass AWS IoT Greengrass per te Account AWS in questa regione.

Quando utilizzi la pagina Configure core device discovery nella AWS IoT Greengrassconsole, AWS IoT Greengrass configura automaticamente il ruolo del servizio Greengrass. Altrimenti, puoi configurarlo manualmente utilizzando la AWS IoTconsole o l'AWS IoT GreengrassAPI.

In questa sezione, si verifica se il ruolo di servizio Greengrass è impostato. Se non è configurato, crei un nuovo ruolo di servizio Greengrass a cui AWS IoT Greengrass associarti Account AWS in questa regione.

  1. Verifica se il ruolo di servizio Greengrass è associato AWS IoT Greengrass al tuo ruolo Account AWS in questa regione. Esegui questa operazione:

    1. Passare alla console AWS IoT.

    2. Nel pannello di navigazione scegli Impostazioni.

    3. Nella sezione Ruolo di servizio Greengrass, trova Ruolo di servizio corrente per vedere se è associato un ruolo di servizio Greengrass.

      Se hai un ruolo di servizio Greengrass associato, soddisfi questo requisito per utilizzare il componente del rilevatore IP. Passa a Configura la policy relativa agli AWS IoT oggetti.

  2. Se il ruolo di servizio Greengrass non è associato AWS IoT Greengrass al tuo ruolo Account AWS in questa regione, crea un ruolo di servizio Greengrass e associalo. Esegui questa operazione:

    1. Passare alla IAM console (Console IAM).

    2. Scegliere Roles (Ruoli).

    3. Scegli Crea ruolo.

    4. Nella pagina Crea ruolo, procedi come segue:

      1. In Tipo di entità affidabile, scegli Servizio AWS.

      2. In Caso d'uso, Casi d'uso per altro Servizi AWS, scegli Greengrass, seleziona Greengrass. Questa opzione specifica l'aggiunta AWS IoT Greengrass come entità attendibile che può assumere questo ruolo.

      3. Seleziona Avanti.

      4. In Politiche di autorizzazione, seleziona AWSGreengrassResourceAccessRolePolicyda associare al ruolo.

      5. Seleziona Avanti.

      6. In Nome ruolo, inserisci un nome per il ruolo, ad esempioGreengrass_ServiceRole.

      7. Scegli Crea ruolo.

    5. Passare alla console AWS IoT.

    6. Nel pannello di navigazione scegli Impostazioni.

    7. Nella sezione Ruolo di servizio Greengrass, scegli Collega ruolo.

    8. Nella modalità Update Greengrass service role, seleziona il ruolo IAM che hai creato, quindi scegli Attach role.

  1. Verifica se il ruolo di servizio Greengrass è associato AWS IoT Greengrass al tuo ruolo Account AWS in questa regione.

    aws greengrassv2 get-service-role-for-account

    Se il ruolo di servizio Greengrass è associato, l'operazione restituisce una risposta contenente informazioni sul ruolo.

    Se hai un ruolo di servizio Greengrass associato, soddisfi questo requisito per utilizzare il componente del rilevatore IP. Passa a Configura la policy relativa agli AWS IoT oggetti.

  2. Se il ruolo di servizio Greengrass non è associato AWS IoT Greengrass al tuo ruolo Account AWS in questa regione, crea un ruolo di servizio Greengrass e associalo. Esegui questa operazione:

    1. Creare un ruolo con una policy di attendibilità che consenta a AWS IoT Greengrass di assumere tale ruolo. In questo esempio viene creato un ruolo denominato Greengrass_ServiceRole, ma è possibile utilizzare un nome diverso. Ti consigliamo di includere anche le chiavi di contesto della aws:SourceArn condizione aws:SourceAccount globale nella tua politica di fiducia per evitare il confuso problema della sicurezza dei vicedirettori. Le chiavi di contesto delle condizioni limitano l'accesso per consentire solo le richieste che provengono dall'account specificato e dall'area di lavoro Greengrass. Per ulteriori informazioni sul problema del "confused deputy", consulta Prevenzione del problema "confused deputy" tra servizi.

      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. Copiare il ruolo ARN dai metadati del ruolo nell'output. Utilizzare l'ARN per associare un ruolo all'account.

    3. Collegare la policy AWSGreengrassResourceAccessRolePolicy al ruolo.

      aws iam attach-role-policy --role-name Greengrass_ServiceRole --policy-arn arn:aws:iam::aws:policy/service-role/AWSGreengrassResourceAccessRolePolicy
    4. Associa il ruolo di servizio Greengrass a AWS IoT Greengrass for your. Account AWS Sostituisci role-arn con l'ARN del ruolo di servizio.

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

      L'operazione restituisce la seguente risposta se ha esito positivo.

      { "associatedAt": "timestamp" }

Configura la policy relativa agli AWS IoT oggetti

I dispositivi principali utilizzano i certificati dei dispositivi X.509 per autorizzare le connessioni a. AWS Si allegano AWS IoT politiche ai certificati dei dispositivi per definire le autorizzazioni per un dispositivo principale. Per ulteriori informazioni, consultare Policy AWS IoT per operazioni del piano dei dati e AWS IoTPolitica minima per supportare i dispositivi client.

Per connettere i dispositivi client a un dispositivo principale, la AWS IoT politica del dispositivo principale deve consentire le seguenti autorizzazioni:

In questa sezione, esaminate le AWS IoT politiche per il vostro dispositivo principale e aggiungete le eventuali autorizzazioni necessarie mancanti. Se hai utilizzato il programma di installazione del software AWS IoT Greengrass Core per il provisioning delle risorse, il tuo dispositivo principale dispone di una AWS IoT politica che consente l'accesso a tutte le AWS IoT Greengrass azioni ()greengrass:*. In questo caso, è necessario aggiornare la AWS IoT policy solo se si prevede di distribuire il componente shadow manager con cui sincronizzare le ombre dei dispositivi. AWS IoT Core Altrimenti, puoi saltare questa sezione.

  1. Nel menu di navigazione della AWS IoT Greengrassconsole, scegli Dispositivi principali.

  2. Nella pagina Dispositivi principali, scegli il dispositivo principale da aggiornare.

  3. Nella pagina dei dettagli del dispositivo principale, scegli il link all'oggetto del dispositivo principale. Questo link apre la pagina dei dettagli dell'oggetto nella AWS IoT console.

  4. Nella pagina dei dettagli dell'oggetto, scegli Certificati.

  5. Nella scheda Certificati, scegli il certificato attivo dell'oggetto.

  6. Nella pagina dei dettagli del certificato, scegli Politiche.

  7. Nella scheda Politiche, scegli la AWS IoT politica da rivedere e aggiornare. Puoi aggiungere le autorizzazioni richieste a qualsiasi policy allegata al certificato attivo del dispositivo principale.

    Nota

    Se hai utilizzato il programma di installazione del software AWS IoT Greengrass Core per il provisioning delle risorse, hai due AWS IoT politiche. Ti consigliamo di scegliere la politica denominata GreengrassV2IoTThingPolicy, se esiste. I dispositivi principali creati con il programma di installazione rapida utilizzano questo nome di policy per impostazione predefinita. Se aggiungi autorizzazioni a questo criterio, concedi tali autorizzazioni anche ad altri dispositivi principali che utilizzano questo criterio.

  8. Nella panoramica della politica, scegli Modifica versione attiva.

  9. Rivedi la politica per le autorizzazioni richieste e aggiungi le autorizzazioni richieste mancanti.

  10. (Facoltativo) Per consentire al dispositivo principale di sincronizzare gli shadows con, aggiungete la seguente dichiarazione alla policy. AWS IoT Core Se prevedi di interagire con le ombre dei dispositivi client, ma non di sincronizzarle con loroAWS IoT Core, salta questo passaggio. Sostituisci la regione e l'ID dell'account con la regione che usi e il tuo numero. Account AWS

    • Questa istruzione di esempio consente l'accesso alle ombre del dispositivo di tutti gli oggetti. Per seguire le migliori pratiche di sicurezza, è possibile limitare l'accesso solo al dispositivo principale e ai dispositivi client collegati al dispositivo principale. Per ulteriori informazioni, consulta AWS IoTPolitica minima per supportare i dispositivi client.

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

    Dopo aver aggiunto questa dichiarazione, il documento di policy potrebbe avere un aspetto simile all'esempio seguente.

    { "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. Per impostare una nuova versione della politica come versione attiva, in Stato della versione della politica, seleziona Imposta la versione modificata come versione attiva per questa politica.

  12. Scegli Salva come nuova versione.

  1. Elenca i principi fondamentali del AWS IoT dispositivo principale. I principali degli oggetti possono essere certificati di dispositivo X.509 o altri identificatori. Esegui il comando seguente e sostituiscilo MyGreengrassCorecon il nome del dispositivo principale.

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

    L'operazione restituisce una risposta che elenca i componenti principali del dispositivo principale.

    { "principals": [ "arn:aws:iot:us-west-2:123456789012:cert/certificateId" ] }
  2. Identifica il certificato attivo del dispositivo principale. Esegui il comando seguente e sostituisci CertificateID con l'ID di ogni certificato del passaggio precedente fino a trovare il certificato attivo. L'ID del certificato è la stringa esadecimale alla fine dell'ARN del certificato. L'--queryargomento specifica di visualizzare solo lo stato del certificato.

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

    L'operazione restituisce lo stato del certificato sotto forma di stringa. Ad esempio, se il certificato è attivo, questa operazione genera un output"ACTIVE".

  3. Elenca le AWS IoT politiche allegate al certificato. Esegui il comando seguente e sostituisci l'ARN del certificato con l'ARN del certificato.

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

    L'operazione restituisce una risposta che elenca le AWS IoT politiche allegate al certificato.

    { "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. Scegli la politica da visualizzare e aggiornare.

    Nota

    Se hai utilizzato il programma di installazione del software AWS IoT Greengrass Core per il provisioning delle risorse, hai due AWS IoT politiche. Ti consigliamo di scegliere la politica denominata GreengrassV2IoTThingPolicy, se esiste. I dispositivi principali creati con il programma di installazione rapida utilizzano questo nome di policy per impostazione predefinita. Se aggiungi autorizzazioni a questo criterio, concedi tali autorizzazioni anche ad altri dispositivi principali che utilizzano questo criterio.

  5. Scarica il documento della politica. Esegui il comando seguente e sostituisci GreenGrassV2IoT ThingPolicy con il nome della politica.

    aws iot get-policy --policy-name GreengrassV2IoTThingPolicy

    L'operazione restituisce una risposta che contiene il documento della politica e altre informazioni sulla politica. Il documento di policy è un oggetto JSON serializzato come stringa.

    { "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. Utilizzate un convertitore online o un altro strumento per convertire la stringa del documento di policy in un oggetto JSON, quindi salvatela in un file denominato. iot-policy.json

    Ad esempio, se è installato lo strumento jq, è possibile eseguire il comando seguente per ottenere il documento di policy, convertirlo in un oggetto JSON e salvare il documento di policy come oggetto JSON.

    aws iot get-policy --policy-name GreengrassV2IoTThingPolicy --query 'policyDocument' | jq fromjson >> iot-policy.json
  7. Esamina la politica per le autorizzazioni richieste e aggiungi le autorizzazioni richieste mancanti.

    Ad esempio, su un sistema basato su Linux, è possibile eseguire il comando seguente per utilizzare GNU nano per aprire il file.

    nano iot-policy.json
  8. Salva le modifiche come nuova versione della politica. Esegui il comando seguente e sostituisci GreenGrassV2IoT ThingPolicy con il nome della politica.

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

    L'operazione restituisce una risposta simile all'esempio seguente se ha esito positivo.

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

Componenti Greengrass per il supporto dei dispositivi client

Importante

Il dispositivo principale deve eseguire Greengrass nucleus v2.2.0 o versione successiva per supportare i dispositivi client.

Per consentire ai dispositivi client di connettersi e comunicare con un dispositivo principale, si distribuiscono i seguenti componenti Greengrass sul dispositivo principale:

  • Autenticazione del dispositivo client (aws.greengrass.clientdevices.Auth)

    Implementa il componente di autenticazione del dispositivo client per autenticare i dispositivi client e autorizzare le azioni dei dispositivi client. Questo componente consente ai tuoi dispositivi di AWS IoT connettersi a un dispositivo principale.

    Questo componente richiede alcune configurazioni per utilizzarlo. È necessario specificare i gruppi di dispositivi client e le operazioni che ciascun gruppo è autorizzato a eseguire, ad esempio la connessione e la comunicazione tramite MQTT. Per ulteriori informazioni, consultate Configurazione dei componenti di autenticazione dei dispositivi client.

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

    Implementate il componente del broker MQTT Moquette per eseguire un broker MQTT leggero. Il broker Moquette MQTT è conforme a MQTT 3.1.1 e include il supporto locale per QoS 0, QoS 1, QoS 2, messaggi conservati, messaggi di ultima volontà e abbonamenti permanenti.

    Non è necessario configurare questo componente per utilizzarlo. Tuttavia, è possibile configurare la porta su cui questo componente gestisce il broker MQTT. Per impostazione predefinita, utilizza la porta 8883.

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

    Nota

    Per utilizzare il broker EMQX MQTT 5, è necessario utilizzare Greengrass nucleus v2.6.0 o versione successiva e l'autenticazione del dispositivo client v2.2.0 o successiva.

    Implementate il componente broker EMQX MQTT per utilizzare le funzionalità MQTT 5.0 nella comunicazione tra i dispositivi client e il dispositivo principale. Il broker EMQX MQTT è conforme a MQTT 5.0 e include il supporto per gli intervalli di scadenza delle sessioni e dei messaggi, le proprietà degli utenti, gli abbonamenti condivisi, gli alias degli argomenti e altro ancora.

    Non è necessario configurare questo componente per utilizzarlo. Tuttavia, è possibile configurare la porta su cui questo componente gestisce il broker MQTT. Per impostazione predefinita, utilizza la porta 8883.

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

    (Facoltativo) Implementate il componente bridge MQTT per inoltrare messaggi tra dispositivi client (MQTT locale), pubblicazione e sottoscrizione locali e MQTT. AWS IoT Core Configura questo componente per sincronizzare i dispositivi client AWS IoT Core e interagire con i dispositivi client dai componenti Greengrass.

    Questo componente richiede una configurazione per essere utilizzato. È necessario specificare le mappature degli argomenti in cui questo componente inoltra i messaggi. Per ulteriori informazioni, vedere Configurazione dei componenti del bridge MQTT.

  • Rilevatore IP (aws.greengrass.clientdevices.IPDetector)

    (Facoltativo) Implementate il componente del rilevatore IP per segnalare automaticamente gli endpoint del broker MQTT del dispositivo principale al servizio cloud. AWS IoT Greengrass Non è possibile utilizzare questo componente se si dispone di una configurazione di rete complessa, ad esempio una in cui un router inoltra la porta del broker MQTT al dispositivo principale.

    Non è necessario configurare questo componente per utilizzarlo.

  • Gestore delle ombre (aws.greengrass.ShadowManager)

    (Facoltativo) Implementate il componente shadow manager per gestire le ombre dei dispositivi client sul dispositivo principale. I componenti Greengrass possono ottenere, aggiornare ed eliminare le ombre dei dispositivi client per interagire con i dispositivi client. È inoltre possibile configurare il componente shadow manager per sincronizzare le ombre dei dispositivi client con il servizio cloud. AWS IoT Core

    Per utilizzare questo componente con le ombre dei dispositivi client, è necessario configurare il componente bridge MQTT per inoltrare i messaggi tra i dispositivi client e lo shadow manager, che utilizza la pubblicazione/sottoscrizione locale. Altrimenti, questo componente non richiede alcuna configurazione per essere utilizzato, ma richiede la configurazione per sincronizzare le ombre del dispositivo.

Nota

Si consiglia di implementare solo un componente del broker MQTT. I componenti del bridge MQTT e del rilevatore IP funzionano con un solo componente del broker MQTT alla volta. Se si distribuiscono più componenti del broker MQTT, è necessario configurarli per utilizzare porte diverse.

Configura cloud discovery (console)

Puoi utilizzare la AWS IoT Greengrass console per associare i dispositivi client, gestire gli endpoint principali dei dispositivi e distribuire componenti per abilitare il supporto dei dispositivi client. Per ulteriori informazioni, consulta Passaggio 2: abilitare il supporto per i dispositivi client.

Configura cloud discovery () AWS CLI

Puoi utilizzare il AWS Command Line Interface (AWS CLI) per associare i dispositivi client, gestire gli endpoint principali dei dispositivi e distribuire componenti per abilitare il supporto dei dispositivi client. Per ulteriori informazioni, consulta gli argomenti seguenti: