Prepara il Raspberry Pi per eseguire i lavori - 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à.

Prepara il Raspberry Pi per eseguire i lavori

Le procedure in questa sezione descrivono come preparare il Raspberry Pi all'esecuzione dei job utilizzando il AWS IoT Device Client.

Nota

Queste procedure sono specifiche per il dispositivo. Se si desidera eseguire le procedure in questa sezione con più di un dispositivo contemporaneamente, ogni dispositivo avrà bisogno di una propria policy e di un certificato univoco specifico per il dispositivo e il nome dell'oggetto. Per fornire a ciascun dispositivo le sue risorse uniche, eseguire questa procedura una volta per ciascun dispositivo mentre si modificano gli elementi specifici del dispositivo come descritto nelle procedure.

Effettua il provisioning del tuo Raspberry Pi per dimostrare i processi

Le procedure descritte in questa sezione forniscono il tuo Raspberry Pi AWS IoT creando AWS IoT risorse e certificati dei dispositivi relativi al dispositivo.

Crea e scarica i file dei certificati dei dispositivi per dimostrare AWS IoT i lavori

Questa procedura crea i file di certificato del dispositivo per questa demo.

Se si stanno preparando più di un dispositivo, questa procedura deve essere eseguita su ciascun dispositivo.

Per creare e scaricare i file di certificato del dispositivo per il tuo Raspberry Pi:

Nella finestra terminale del computer host locale connesso al Raspberry Pi, inserisci questi comandi.

  1. Inserisci il seguente comando per creare i file dei certificati del dispositivo per il dispositivo.

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

    Questo comando restituisce una risposta simile alla seguente. Salva il certificateArn per utilizzarlo in un secondo momento.

    { "certificateArn": "arn:aws:iot:us-west-2:57EXAMPLE833:cert/76e7e4edb3e52f52334be2f387a06145b2aa4c7fcd810f3aea2d92abc227d269", "certificateId": "76e7e4edb3e52f5233EXAMPLE7a06145b2aa4c7fcd810f3aea2d92abc227d269", "certificatePem": "-----BEGIN CERTIFICATE-----\nMIIDWTCCAkGgAwIBAgI_SHORTENED_FOR_EXAMPLE_Lgn4jfgtS\n-----END CERTIFICATE-----\n", "keyPair": { "PublicKey": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BA_SHORTENED_FOR_EXAMPLE_ImwIDAQAB\n-----END PUBLIC KEY-----\n", "PrivateKey": "-----BEGIN RSA PRIVATE KEY-----\nMIIEowIBAAKCAQE_SHORTENED_FOR_EXAMPLE_T9RoDiukY\n-----END RSA PRIVATE KEY-----\n" } }
  2. Inserisci i seguenti comandi per impostare le autorizzazioni sulla directory dei certificati e sui relativi file.

    chmod 700 ~/certs/jobs chmod 644 ~/certs/jobs/* chmod 600 ~/certs/jobs/private.pem.key
  3. Esegui questo comando per rivedere le autorizzazioni sulle directory e sui file dei certificati.

    ls -l ~/certs/jobs

    L'output del comando dovrebbe essere lo stesso di quello che vedi qui, tranne per le date e gli orari del file.

    -rw-r--r-- 1 pi pi 1220 Oct 28 13:02 device.pem.crt -rw------- 1 pi pi 1675 Oct 28 13:02 private.pem.key -rw-r--r-- 1 pi pi 451 Oct 28 13:02 public.pem.key

Dopo aver scaricato i file del certificato del dispositivo sul tuo Raspberry Pi, sei pronto a proseguire con Effettua il provisioning del tuo Raspberry Pi per dimostrare i processi.

Crea AWS IoT risorse per dimostrare i AWS IoT lavori

Crea le AWS IoT risorse per questo dispositivo.

Se si stanno preparando più dispositivi, questa procedura deve essere eseguita su ciascun dispositivo.

Per effettuare il provisioning del dispositivo in AWS IoT:

Nella finestra terminale del computer host locale connesso al Raspberry Pi:

  1. Inserisci il seguente comando per ottenere l'indirizzo dell'endpoint dati del dispositivo per il Account AWS.

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

    Il valore dell'endpoint non è cambiato dall'ultima volta che hai eseguito questo comando. Il comando viene eseguito nuovamente per trovare e incollare facilmente il valore dell'endpoint dei dati nel file di configurazione utilizzato in questo tutorial.

    Il comando describe-endpoint restituisce una risposta simile alla seguente. Registra il valore endpointAddress per utilizzarlo in seguito.

    { "endpointAddress": "a3qjEXAMPLEffp-ats.iot.us-west-2.amazonaws.com" }
  2. Replace (Sostituisci) uniqueThingName con un nome univoco per il dispositivo. Se si desidera eseguire questo tutorial con più dispositivi, assegnare a ciascun dispositivo il proprio nome. Ad esempio, TestDevice01, TestDevice02, e così via.

    Inserisci questo comando per creare una nuova AWS IoT risorsa per il tuo Raspberry Pi.

    aws iot create-thing --thing-name "uniqueThingName"

    Poiché una risorsa AWS IoT oggetto è una rappresentazione virtuale del tuo dispositivo nel cloud, possiamo creare più risorse di oggetti AWS IoT da utilizzare per scopi diversi. Possono essere utilizzati tutti dallo stesso dispositivo IoT fisico per rappresentare diversi aspetti del dispositivo.

    Nota

    Se si desidera proteggere la policy per più dispositivi, è possibile utilizzare ${iot:Thing.ThingName} invece del nome statico dell'oggetto, uniqueThingName.

    Questi tutorial utilizzeranno una sola risorsa alla volta per dispositivo. In questo modo, in questi tutorial, rappresentano le diverse demo in modo che, dopo aver creato le AWS IoT risorse per una demo, sia possibile tornare indietro e ripetere le demo utilizzando le risorse create appositamente per ciascuna di esse.

    Se la risorsa AWS IoT oggetto è stata creata, il comando restituisce una risposta come questa. Registra il valore thingArn da utilizzare in un secondo momento quando si crea il processo da eseguire su questo dispositivo.

    { "thingName": "uniqueThingName", "thingArn": "arn:aws:iot:us-west-2:57EXAMPLE833:thing/uniqueThingName", "thingId": "8ea78707-32c3-4f8a-9232-14bEXAMPLEfd" }
  3. Nella finestra terminale:

    1. Apri un editor di testo, ad esempio nano.

    2. Copia questo JSON documento e incollalo nell'editor di testo aperto.

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iot:Connect" ], "Resource": [ "arn:aws:iot:us-west-2:57EXAMPLE833:client/uniqueThingName" ] }, { "Effect": "Allow", "Action": [ "iot:Publish" ], "Resource": [ "arn:aws:iot:us-west-2:57EXAMPLE833:topic/test/dc/pubtopic", "arn:aws:iot:us-west-2:57EXAMPLE833:topic/$aws/events/job/*", "arn:aws:iot:us-west-2:57EXAMPLE833:topic/$aws/events/jobExecution/*", "arn:aws:iot:us-west-2:57EXAMPLE833:topic/$aws/things/uniqueThingName/jobs/*" ] }, { "Effect": "Allow", "Action": [ "iot:Subscribe" ], "Resource": [ "arn:aws:iot:us-west-2:57EXAMPLE833:topicfilter/test/dc/subtopic", "arn:aws:iot:us-west-2:57EXAMPLE833:topic/$aws/events/jobExecution/*", "arn:aws:iot:us-west-2:57EXAMPLE833:topicfilter/$aws/things/uniqueThingName/jobs/*" ] }, { "Effect": "Allow", "Action": [ "iot:Receive" ], "Resource": [ "arn:aws:iot:us-west-2:57EXAMPLE833:topic/test/dc/subtopic", "arn:aws:iot:us-west-2:57EXAMPLE833:topic/$aws/things/uniqueThingName/jobs/*" ] }, { "Effect": "Allow", "Action": [ "iot:DescribeJobExecution", "iot:GetPendingJobExecutions", "iot:StartNextPendingJobExecution", "iot:UpdateJobExecution" ], "Resource": [ "arn:aws:iot:us-west-2:57EXAMPLE833:topic/$aws/things/uniqueThingName" ] } ] }
    3. Nell'editor, nella Resource sezione di ogni dichiarazione politica, sostituisci us-west-2:57EXAMPLE833 con il tuo Regione AWS, un carattere con i due punti (:) e il tuo numero di 12 cifre Account AWS .

    4. Nell'editor, in ogni dichiarazione politica, sostituisci uniqueThingName con il nome della cosa che hai dato a questa risorsa.

    5. Salva il file nell'editor di testo come ~/policies/jobs_test_thing_policy.json.

      Se si esegue questa procedura per più dispositivi, salvare il file con questo nome file su ciascun dispositivo.

  4. Replace (Sostituisci) uniqueThingName con il nome dell'oggetto per il dispositivo, quindi esegui questo comando per creare una AWS IoT politica personalizzata per quel dispositivo.

    aws iot create-policy \ --policy-name "JobTestPolicyForuniqueThingName" \ --policy-document "file://~/policies/jobs_test_thing_policy.json"

    Se la policy viene creata, verrà visualizzata una risposta simile alla seguente.

    { "policyName": "JobTestPolicyForuniqueThingName", "policyArn": "arn:aws:iot:us-west-2:57EXAMPLE833:policy/JobTestPolicyForuniqueThingName", "policyDocument": "{\n\"Version\": \"2012-10-17\",\n\"Statement\": [\n{\n\"Effect\": \"Allow\",\n\"Action\": [\n\"iot:Connect\"\n],\n\"Resource\": [\n\"arn:aws:iot:us-west-2:57EXAMPLE833:client/PubSubTestThing\"\n]\n},\n{\n\"Effect\": \"Allow\",\n\"Action\": [\n\"iot:Publish\"\n],\n\"Resource\": [\n\"arn:aws:iot:us-west-2:57EXAMPLE833:topic/test/dc/pubtopic\"\n]\n},\n{\n\"Effect\": \"Allow\",\n\"Action\": [\n\"iot:Subscribe\"\n],\n\"Resource\": [\n\"arn:aws:iot:us-west-2:57EXAMPLE833:topicfilter/test/dc/subtopic\"\n]\n},\n{\n\"Effect\": \"Allow\",\n\"Action\": [\n\"iot:Receive\"\n],\n\"Resource\": [\n\"arn:aws:iot:us-west-2:57EXAMPLE833:topic/test/dc/*\"\n]\n}\n]\n}\n", "policyVersionId": "1"
  5. Replace (Sostituisci) uniqueThingName con il nome dell'oggetto per il dispositivo e certificateArn con il certificateArn valore salvato in precedenza in questa sezione per questo dispositivo, quindi esegui questo comando per allegare la policy al certificato del dispositivo.

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

    In caso di successo, questo comando non restituisce alcun risultato.

  6. Replace (Sostituisci) uniqueThingName con il nome dell'oggetto, sostituiscilo certificateArn con il certificateArn valore salvato in precedenza in questa sezione, quindi esegui questo comando per allegare il certificato del dispositivo alla risorsa AWS IoT oggetto.

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

    In caso di successo, questo comando non restituisce alcun risultato.

Dopo aver eseguito correttamente il provisioning del Raspberry Pi, sei pronto a ripetere questa sezione per un altro Raspberry Pi nel test, oppure, se tutti i dispositivi sono stati sottoposti a provisioning, prosegui con Configura il AWS IoT Device Client per eseguire il jobs agent.

Configura il AWS IoT Device Client per eseguire il jobs agent

Questa procedura crea un file di configurazione per il AWS IoT Device Client per eseguire il jobs agent:.

Se si sta preparando più di un dispositivo, questa procedura deve essere eseguita su ciascun dispositivo.

Per creare il file di configurazione per testare il AWS IoT Device Client:
  1. Nella finestra terminale del computer host locale connesso al Raspberry Pi:

    1. Apri un editor di testo, ad esempio nano.

    2. Copia questo JSON documento e incollalo nell'editor di testo aperto.

      { "endpoint": "a3qEXAMPLEaffp-ats.iot.us-west-2.amazonaws.com", "cert": "~/certs/jobs/device.pem.crt", "key": "~/certs/jobs/private.pem.key", "root-ca": "~/certs/AmazonRootCA1.pem", "thing-name": "uniqueThingName", "logging": { "enable-sdk-logging": true, "level": "DEBUG", "type": "STDOUT", "file": "" }, "jobs": { "enabled": true, "handler-directory": "" }, "tunneling": { "enabled": false }, "device-defender": { "enabled": false, "interval": 300 }, "fleet-provisioning": { "enabled": false, "template-name": "", "template-parameters": "", "csr-file": "", "device-key": "" }, "samples": { "pub-sub": { "enabled": false, "publish-topic": "", "publish-file": "", "subscribe-topic": "", "subscribe-file": "" } }, "config-shadow": { "enabled": false }, "sample-shadow": { "enabled": false, "shadow-name": "", "shadow-input-file": "", "shadow-output-file": "" } }
    3. Sostituisci il endpoint valore con il valore dell'endpoint dei dati del dispositivo Account AWS che hai trovato inEffettua il provisioning del dispositivo in AWS IoT Core.

    4. Replace (Sostituisci) uniqueThingName con il nome dell'oggetto che hai usato per questo dispositivo.

    5. Salva il file nell'editor di testo come ~/dc-configs/dc-jobs-config.json.

  2. Esegui questo comando per impostare le autorizzazioni per il file del nuovo file di configurazione.

    chmod 644 ~/dc-configs/dc-jobs-config.json

Non utilizzerai il client MQTT di test per questo test. Sebbene il dispositivo scambia MQTT messaggi relativi ai lavori con AWS IoT, i messaggi sullo stato di avanzamento del lavoro vengono scambiati solo con il dispositivo che esegue il lavoro. Poiché i messaggi sullo stato di avanzamento del processo vengono scambiati solo con il dispositivo che esegue il processo, non è possibile abbonarsi ad essi da un altro dispositivo, ad esempio la console. AWS IoT

Dopo aver salvato il file di configurazione, è possibile proseguire con Crea ed esegui il job AWS IoT con AWS IoT Device Client.