Crea un dispositivo virtuale con Amazon EC2 - AWS IoT Core

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

Crea un dispositivo virtuale con Amazon EC2

In questo tutorial, creerai un'istanza Amazon EC2 da utilizzare come dispositivo virtuale nel cloud.

Per completare questo tutorial, hai bisogno di un Account AWS. Se non disponi dell'account, effettua la procedura descritta in Configura il tuo Account AWS, prima di continuare.

Configurare un'istanza Amazon EC2

Nei passaggi seguenti viene illustrato come creare un'istanza Amazon EC2 che fungerà da dispositivo virtuale al posto di un dispositivo fisico.

Se è la prima volta che crei un'istanza Amazon EC2, puoi trovare le istruzioni nella guida Nozioni di base sulle istanze Amazon EC2 Linux.

Per avviare un'istanza
  1. Aprire la console Amazon EC2 all'indirizzo https://console.aws.amazon.com/ec2/.

  2. Dal menu della console a sinistra, espandi la sezione Instances (Istanze) e scegli Istanze (Istanze). Dalla dashboard Istanze (Istanze), scegli Launch instances (Avvia istanze) sulla destra per visualizzare un elenco di configurazioni di base.

  3. Nella sezione Name and tags (Nome e tag), inserisci un nome per l'istanza e, facoltativamente, aggiungi tag.

  4. Nella sezione Immagini di applicazioni e sistema operativo (Amazon Machine Image), scegli un modello AMI per l'istanza, ad esempio Amazon Linux 2 AMI (HVM). Nota che queste AMI sono contrassegnate dalla dicitura "Free tier eligible" (Idonea per il piano gratuito).

  5. Nella sezione Instance type (Tipo di istanza), è possibile selezionare la configurazione hardware per l'istanza. Selezionare il tipo t2.micro, ovvero l'opzione selezionata per impostazione di default. Questo tipo di istanza è idoneo per il piano gratuito.

  6. Nella sezione Key pair (login) (Coppia di chiavi (accesso)), scegli il nome di una coppia di chiavi dall'elenco a discesa o scegli Create a new key pair (Crea una nuova coppia di chiavi) per crearne una nuova. Quando crei una nuova coppia di chiavi, assicurati di scaricare il file della chiave privata e di salvarlo in un luogo sicuro, perché questa è l'unica possibilità che hai per scaricarlo e salvarlo. Dovrai fornire il nome della coppia di chiavi quando avvii un'istanza e la chiave privata corrispondente ogni volta che ti connetti all'istanza.

    avvertimento

    Non selezionare l'opzione Proceed without a key pair (Procedi senza una coppia di chiavi). Se l'istanza viene avviata senza una coppia di chiavi, non sarà possibile connettersi a essa.

  7. Nella sezione Network settings (Impostazioni di rete) e nella sezione Configure storage (Configura archiviazione), è possibile mantenere le impostazioni predefinite. Al termine, scegli Launch Instances (Avvia istanze).

  8. Una pagina di conferma indicherà che l'istanza si sta avviando. Scegliere View Instances (Visualizza istanze) per chiudere la pagina di conferma e tornare alla console.

  9. Nella schermata Instances (Istanze), è possibile visualizzare lo stato dell'avvio. L'avvio di un'istanza richiede pochi minuti. Quando avvii un'istanza, il suo stato iniziale è pending. Dopo aver avviato l'istanza, il relativo stato cambia in running e l'istanza riceve un nome DNS pubblico. Se la colonna Public DNS (IPv4) (DNS pubblico (IPv4)) è nascosta, scegliere Show/Hide Columns (Mostra/nascondi colonne) (icona a forma di ingranaggio) nell'angolo superiore destro della pagina, quindi selezionare Public DNS (IPv4) (DNS pubblico (IPv4)).)

  10. Possono essere necessari alcuni minuti affinché l'istanza sia pronta e sia possibile connettervisi. Controllare che l'istanza abbia superato i controlli relativi allo stato. È possibile visualizzare queste informazioni nella colonna Status Checks (Verifiche dello stato).

    Dopo che la nuova istanza ha superato i controlli di stato, continua con la procedura successiva e connettiti ad essa.

Per collegarsi all'istanza

È possibile connettersi a un'istanza tramiteil client basato su browser selezionando l'istanza dalla console Amazon EC2 e scegliendo di effettuare la connessione tramite Amazon EC2 Instance Connect. Instance Connect gestisce le autorizzazioni e fornisce una connessione valida.

  1. Apri la console Amazon EC2 all'indirizzo https://console.aws.amazon.com/ec2/.

  2. Nel menu a sinistra, seleziona Instances (Istanze).

  3. Selezionare l'istanza, quindi scegliere Collegarsi.

  4. Scegli Amazon EC2 Instance Connect, Connect (Collega).

Ora dovresti disporre di una finestra Amazon EC2 Instance Connect che effettua l'accesso alla nuova istanza Amazon EC2.

Installa Git, Node.js e configura la AWS CLI

In questa sezione, installerai Git e Node.js, nell'istanza Linux.

Per installare Git
  1. Nella finestra Amazon EC2 Instance Connect, esegui l'aggiornamento dell'istanza utilizzando il comando seguente.

    sudo yum update -y
  2. Nella finestra Amazon EC2 Instance Connect, installa Git utilizzando il comando seguente.

    sudo yum install git -y
  3. Per verificare se Git è stato installato e la versione corrente di Git, esegui il seguente comando:

    git --version
Per installare Node.js
  1. Nella finestra Amazon EC2 Instance Connect, installa il gestore delle versioni del nodo (nvm) utilizzando il seguente comando.

    curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.34.0/install.sh | bash

    Verrà utilizzato nvm per installare Node.js perché è in grado di installare più versioni di Node.js e consente di passare dall'una all'altra.

  2. Nella finestra Amazon EC2 Instance Connect, attiva nvm utilizzando questo comando.

    . ~/.nvm/nvm.sh
  3. Nella finestra Amazon EC2 Instance Connect, utilizza nvm per installare la versione più recente di Node.js utilizzando questo comando.

    nvm install 16
    Nota

    Installa l'ultima versione LTS di Node.js.

    Installando Node.js, viene installato anche il gestore di pacchetti nodo (npm), quindi è possibile installare moduli aggiuntivi in base alle esigenze.

  4. Nella finestra Amazon EC2 Instance Connect verifica che Node.js sia installato e funzioni correttamente utilizzando questo comando.

    node -e "console.log('Running Node.js ' + process.version)"

    Questo tutorial richiede Node 10.0 o versioni successive. Per ulteriori informazioni, consulta Tutorial: Setting Up Node.js on an Amazon EC2 Instance (Tutorial: configurazione di Node.js su un'istanza Amazon EC2).

Per configurare AWS CLI

L'istanza Amazon EC2 viene precaricata con AWS CLI. Tuttavia, devi completare il tuo AWS CLI profilo. Per ulteriori informazioni su come configurare la tua CLI, consulta Configurazione di AWS CLI.

  1. L'esempio seguente illustra i valori di esempio. Sostituisci questi valori con i tuoi valori. Questi valori sono disponibili nella console AWS nelle informazioni dell'account in Security credentials (Credenziali di sicurezza).

    Nella finestra Amazon EC2 Instance Connect, immetti il comando:

    aws configure

    Quindi inserisci i valori dal tuo account alle richieste visualizzate.

    AWS Access Key ID [None]: AKIAIOSFODNN7EXAMPLE AWS Secret Access Key [None]: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY Default region name [None]: us-west-2 Default output format [None]: json
  2. Puoi testare la tua AWS CLI configurazione con questo comando:

    aws iot describe-endpoint --endpoint-type iot:Data-ATS

    Se il tuo AWS CLI è configurato correttamente, il comando dovrebbe restituire un indirizzo di endpoint inviato dal tuo Account AWS.

Crea AWS IoT risorse per il tuo dispositivo virtuale

Questa sezione descrive come utilizzare AWS CLI per creare l'oggetto e i relativi file di certificato direttamente sul dispositivo virtuale. Questo viene fatto direttamente sul dispositivo per evitare le potenziali complicazioni che potrebbero derivare dalla copia sul dispositivo da un altro computer. In questa sezione, creerai le seguenti risorse per il tuo dispositivo virtuale:

  • Un oggetto in cui rappresentare il dispositivo virtuale AWS IoT.

  • Un certificato per autenticare il dispositivo virtuale.

  • Un documento di policy per autorizzare il dispositivo virtuale a connettersi ad AWS IoT e pubblicare, ricevere e sottoscrivere messaggi.

Per creare un AWS IoT oggetto nell'istanza Linux

I dispositivi collegati a AWS IoT sono rappresentati da oggetti Thing nel AWS IoT registro. Un oggetto rappresenta un dispositivo specifico o un'entità logica. In questo caso, il tuo oggetto rappresenta il dispositivo virtuale, questa istanza Amazon EC2.

  1. Nella finestra Amazon EC2 Instance Connect, esegui il comando seguente per creare il tuo oggetto.

    aws iot create-thing --thing-name "MyIotThing"
  2. La risposta JSON deve essere simile alla seguente:

    { "thingArn": "arn:aws:iot:your-region:your-aws-account:thing/MyIotThing", "thingName": "MyIotThing", "thingId": "6cf922a8-d8ea-4136-f3401EXAMPLE" }
Per creare e allegare AWS IoT chiavi e certificati nella tua istanza Linux

Il comando create-keys-and-certificate crea certificati client firmati dall'autorità di certificazione root Amazon. Questo certificato viene utilizzato per autenticare l'identità del dispositivo virtuale.

  1. Nell finestra Amazon EC2 Instance Connect crea una directory in cui archiviare i file del certificato e delle chiavi.

    mkdir ~/certs
  2. Nella finestra Amazon EC2 Instance Connect, scarica una copia del certificato dell'autorità di certificazione (CA) Amazon utilizzando questo comando.

    curl -o ~/certs/Amazon-root-CA-1.pem \ https://www.amazontrust.com/repository/AmazonRootCA1.pem
  3. Nella finestra Amazon EC2 Instance Connect, esegui il comando seguente per creare la tua chiave privata e pubblica e i file del certificato X.509. Questo comando inoltre registra e attiva il certificato con. AWS IoT

    aws iot create-keys-and-certificate \ --set-as-active \ --certificate-pem-outfile "~/certs/device.pem.crt" \ --public-key-outfile "~/certs/public.pem.key" \ --private-key-outfile "~/certs/private.pem.key"

    La risposta avrà il seguente aspetto. Salva il certificateArn in modo da poterlo utilizzare nei comandi successivi. Ne avrai bisogno per collegare il certificato al tuo oggetto e per allegare la policy al certificato in un passaggio successivo.

    { "certificateArn": "arn:aws:iot:us-west-2:123456789012:cert/9894ba17925e663f1d29c23af4582b8e3b7619c31f3fbd93adcb51ae54b83dc2", "certificateId": "9894ba17925e663f1d29c23af4582b8e3b7619c31f3fbd93adcb51ae54b83dc2", "certificatePem": " -----BEGIN CERTIFICATE----- MIICiTCCEXAMPLE6m7oRw0uXOjANBgkqhkiG9w0BAQUFADCBiDELMAkGA1UEBhMC VVMxCzAJBgNVBAgEXAMPLEAwDgYDVQQHEwdTZWF0dGxlMQ8wDQYDVQQKEwZBbWF6 b24xFDASBgNVBAsTC0lBTSEXAMPLE2xlMRIwEAYDVQQDEwlUZXN0Q2lsYWMxHzAd BgkqhkiG9w0BCQEWEG5vb25lQGFtYEXAMPLEb20wHhcNMTEwNDI1MjA0NTIxWhcN MTIwNDI0MjA0NTIxWjCBiDELMAkGA1UEBhMCEXAMPLEJBgNVBAgTAldBMRAwDgYD VQQHEwdTZWF0dGxlMQ8wDQYDVQQKEwZBbWF6b24xFDAEXAMPLEsTC0lBTSBDb25z b2xlMRIwEAYDVQQDEwlUZXN0Q2lsYWMxHzAdBgkqhkiG9w0BCQEXAMPLE25lQGFt YXpvbi5jb20wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAMaK0dn+aEXAMPLE EXAMPLEfEvySWtC2XADZ4nB+BLYgVIk60CpiwsZ3G93vUEIO3IyNoH/f0wYK8m9T rDHudUZEXAMPLELG5M43q7Wgc/MbQITxOUSQv7c7ugFFDzQGBzZswY6786m86gpE Ibb3OhjZnzcvQAEXAMPLEWIMm2nrAgMBAAEwDQYJKoZIhvcNAQEFBQADgYEAtCu4 nUhVVxYUntneD9+h8Mg9qEXAMPLEyExzyLwaxlAoo7TJHidbtS4J5iNmZgXL0Fkb FFBjvSfpJIlJ00zbhNYS5f6GuoEDEXAMPLEBHjJnyp378OD8uTs7fLvjx79LjSTb NYiytVbZPQUQ5Yaxu2jXnimvw3rrszlaEXAMPLE= -----END CERTIFICATE-----\n", "keyPair": { "PublicKey": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkEXAMPLEQEFAAOCAQ8AMIIBCgKCAQEAEXAMPLE1nnyJwKSMHw4h\nMMEXAMPLEuuN/dMAS3fyce8DW/4+EXAMPLEyjmoF/YVF/gHr99VEEXAMPLE5VF13\n59VK7cEXAMPLE67GK+y+jikqXOgHh/xJTwo+sGpWEXAMPLEDz18xOd2ka4tCzuWEXAMPLEahJbYkCPUBSU8opVkR7qkEXAMPLE1DR6sx2HocliOOLtu6Fkw91swQWEXAMPLE\GB3ZPrNh0PzQYvjUStZeccyNCx2EXAMPLEvp9mQOUXP6plfgxwKRX2fEXAMPLEDa\nhJLXkX3rHU2xbxJSq7D+XEXAMPLEcw+LyFhI5mgFRl88eGdsAEXAMPLElnI9EesG\nFQIDAQAB\n-----END PUBLIC KEY-----\n", "PrivateKey": "-----BEGIN RSA PRIVATE KEY-----\nkey omitted for security reasons\n-----END RSA PRIVATE KEY-----\n" } }
  4. Nella finestra Amazon EC2 Instance Connect, collega l'oggetto al certificato appena creato utilizzando il seguente comando e il certificateArn nella risposta dal comando precedente.

    aws iot attach-thing-principal \ --thing-name "MyIotThing" \ --principal "certificateArn"

    Se va a buon fine, questo comando non restituisce alcun output.

Creazione e collegamento di una policy
  1. Nella finestra Amazon EC2 Instance Connect, crea il file della policy copiando e incollando questo documento di policy in un file denominato ~/policy.json.

    Se non disponi di un editor Linux preferito, puoi aprire nano, utilizzando questo comando.

    nano ~/policy.json

    Incolla il documento di policy per policy.json in esso. Salva il file ed esci dall'editor di testo nano (Ctrl-X).

    Contenuto del documento di policy per policy.json.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iot:Publish", "iot:Subscribe", "iot:Receive", "iot:Connect" ], "Resource": [ "*" ] } ] }
  2. Nella finestra Amazon EC2 Instance Connect crea la policy utilizzando il comando seguente.

    aws iot create-policy \ --policy-name "MyIotThingPolicy" \ --policy-document "file://~/policy.json"

    Output:

    { "policyName": "MyIotThingPolicy", "policyArn": "arn:aws:iot:your-region:your-aws-account:policy/MyIotThingPolicy", "policyDocument": "{ \"Version\": \"2012-10-17\", \"Statement\": [ { \"Effect\": \"Allow\", \"Action\": [ \"iot:Publish\", \"iot:Receive\", \"iot:Subscribe\", \"iot:Connect\" ], \"Resource\": [ \"*\" ] } ] }", "policyVersionId": "1" }
  3. Nella finestra Amazon EC2 Instance Connect, collega la policy al certificato del dispositivo virtuale utilizzando il comando seguente.

    aws iot attach-policy \ --policy-name "MyIotThingPolicy" \ --target "certificateArn"

    Se va a buon fine, questo comando non restituisce alcun output.

Installa il AWS IoT Device SDK per JavaScript

In questa sezione installerai AWS IoT Device SDK for JavaScript, che contiene il codice con cui le applicazioni possono comunicare AWS IoT e i programmi di esempio. Per ulteriori informazioni, consulta AWS IoT Device SDK for JavaScript GitHub repository.

Per installare AWS IoT Device SDK for JavaScript sulla tua istanza Linux
  1. Nella finestra Amazon EC2 Instance Connect, clona il AWS IoT Device SDK for JavaScript repository nella aws-iot-device-sdk-js-v2 directory della tua home directory usando questo comando.

    cd ~ git clone https://github.com/aws/aws-iot-device-sdk-js-v2.git
  2. Naviga nella directory aws-iot-device-sdk-js-v2 creata nella fase precedente.

    cd aws-iot-device-sdk-js-v2
  3. Utilizzare npm per installare l'SDK.

    npm install

Esecuzione dell'applicazione di esempio

I comandi delle sezioni successive presuppongono che i file di chiave e certificato siano memorizzati sul dispositivo virtuale, come illustrato in questa tabella.

Nomi dei file dei certificati

File

Percorso del file

Chiave privata

~/certs/private.pem.key

Certificato del dispositivo

~/certs/device.pem.crt

Un certificato emesso da una CA root

~/certs/Amazon-root-CA-1.pem

In questa sezione, installerai ed eseguirai l'app di pub-sub.js esempio che si trova nella aws-iot-device-sdk-js-v2/samples/node directory del Device SDK per. AWS IoT JavaScript Questa app mostra come un dispositivo, la tua istanza Amazon EC2, utilizza la libreria MQTT per pubblicare ed effettuare la sottoscrizione ai messaggi MQTT. L'app di esempio pub-sub.js esegue la sottoscrizione a un argomento topic_1, pubblica 10 messaggi in tale argomento e visualizza i messaggi ricevuti dal broker di messaggi.

Per installare ed eseguire l'app di esempio
  1. Nella finestra Amazon EC2 Instance Connect, accedi alla directory aws-iot-device-sdk-js-v2/samples/node/pub_sub che l'SDK ha creato e installa l'app di esempio utilizzando questi comandi.

    cd ~/aws-iot-device-sdk-js-v2/samples/node/pub_sub npm install
  2. Nella finestra di Amazon EC2 Instance Connect, accedi your-iot-endpoint AWS IoT utilizzando questo comando.

    aws iot describe-endpoint --endpoint-type iot:Data-ATS
  3. Nella finestra Amazon EC2 Instance Connect, inserisci your-iot-endpointcome indicato ed esegui questo comando.

    node dist/index.js --topic topic_1 --ca_file ~/certs/Amazon-root-CA-1.pem --cert ~/certs/device.pem.crt --key ~/certs/private.pem.key --endpoint your-iot-endpoint

L'applicazione di esempio:

  1. Si AWS IoT Core connette al tuo account.

  2. Sottoscrive l'argomento del messaggio topic_1 e visualizza i messaggi ricevuti su tale argomento.

  3. Pubblica 10 messaggi su questo argomento topic_1.

  4. L'output sia simile a quello riportato di seguito:

    Publish received. topic:"topic_1" dup:false qos:1 retain:false {"message":"Hello world!","sequence":1} Publish received. topic:"topic_1" dup:false qos:1 retain:false {"message":"Hello world!","sequence":2} Publish received. topic:"topic_1" dup:false qos:1 retain:false {"message":"Hello world!","sequence":3} Publish received. topic:"topic_1" dup:false qos:1 retain:false {"message":"Hello world!","sequence":4} Publish received. topic:"topic_1" dup:false qos:1 retain:false {"message":"Hello world!","sequence":5} Publish received. topic:"topic_1" dup:false qos:1 retain:false {"message":"Hello world!","sequence":6} Publish received. topic:"topic_1" dup:false qos:1 retain:false {"message":"Hello world!","sequence":7} Publish received. topic:"topic_1" dup:false qos:1 retain:false {"message":"Hello world!","sequence":8} Publish received. topic:"topic_1" dup:false qos:1 retain:false {"message":"Hello world!","sequence":9} Publish received. topic:"topic_1" dup:false qos:1 retain:false {"message":"Hello world!","sequence":10}

In caso di problemi nell'esecuzione dell'app di esempio, consulta Risolvi i problemi con l'app di esempio.

È inoltre possibile aggiungere il parametro --verbosity debug alla riga di comando in modo che l'app di esempio visualizzi messaggi dettagliati su ciò che sta facendo. Tali informazioni potrebbero fornirti l'aiuto necessario per risolvere il problema.

Visualizzare i messaggi dall'app di esempio nella console AWS IoT

È possibile visualizzare i messaggi dell'app di esempio durante il passaggio attraverso il broker di messaggi utilizzando il client di test MQTT nella console AWS IoT .

Per visualizzare i messaggi MQTT pubblicati dall'app di esempio
  1. Verificare Visualizza i messaggi MQTT con il AWS IoT client MQTT. In questo modo si impara come utilizzare il client di test MQTT nella console AWS IoT per visualizzare i messaggi MQTT durante il passaggio attraverso il broker di messaggi.

  2. Apri il client di test MQTT nella console AWS IoT .

  3. In Subscribe to a topic (Sottoscrizione a un argomento), effettua la sottoscrizione all'argomento, topic_1.

  4. Nella finestra Amazon EC2 Instance Connect, esegui nuovamente l'app di esempio e guarda i messaggi nel client d test MQTT nella console AWS IoT .

    cd ~/aws-iot-device-sdk-js-v2/samples/node/pub_sub node dist/index.js --topic topic_1 --ca_file ~/certs/Amazon-root-CA-1.pem --cert ~/certs/device.pem.crt --key ~/certs/private.pem.key --endpoint your-iot-endpoint

Per ulteriori informazioni su MQTT e su come AWS IoT Core supporta il protocollo, vedere MQTT.