View a markdown version of this page

Preparación de Raspberry Pi para ejecutar trabajos - AWS IoT Core

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.

Preparación de Raspberry Pi para ejecutar trabajos

Los procedimientos de esta sección describen cómo preparar la Raspberry Pi para ejecutar tareas mediante el cliente del AWS IoT dispositivo.

nota

Estos procedimientos son específicos del dispositivo. Si desea realizar los procedimientos de esta sección con más de un dispositivo al mismo tiempo, cada dispositivo necesitará su propia política y un certificado y un nombre únicos y específicos del dispositivo. Para asignar a cada dispositivo sus recursos exclusivos, realice este procedimiento una vez para cada dispositivo y, al mismo tiempo, cambie los elementos específicos del dispositivo, tal como se describe en los procedimientos.

Aprovisionar la Raspberry Pi para demostrar trabajos

Los procedimientos de esta sección aprovisionan su Raspberry Pi AWS IoT mediante la creación de AWS IoT recursos y certificados de dispositivo para ella.

Crea y descarga archivos de certificados de dispositivos para hacer una demostración AWS IoT jobs

Este procedimiento crea los archivos de certificado del dispositivo para esta demostración.

Si está preparando más de un dispositivo, este procedimiento debe realizarse en cada uno de ellos.

Para crear y descargar los archivos de certificado del dispositivo para la Raspberry Pi:

En la ventana del terminal de su ordenador host local que esté conectado a la Raspberry Pi, introduzca estos comandos:

  1. Escriba el siguiente comando para crear los archivos de certificado del 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"

    El comando devuelve una respuesta similar a la siguiente: Guarde el valor de certificateArn para utilizarlo más tarde.

    { "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. Introduzca los siguientes comandos para configurar los permisos en el directorio de certificados y sus archivos.

    chmod 700 ~/certs/jobs chmod 644 ~/certs/jobs/* chmod 600 ~/certs/jobs/private.pem.key
  3. Ejecute este comando para revisar los permisos de sus directorios y archivos de certificados.

    ls -l ~/certs/jobs

    El resultado del comando debe ser el mismo que el que se muestra aquí, excepto que las fechas y horas de los archivos serán diferentes.

    -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

Una vez descargados los archivos de certificado del dispositivo en la Raspberry Pi, estará listo para continuar con Aprovisionar la Raspberry Pi para demostrar trabajos.

Crear AWS IoT recursos para hacer una demostración AWS IoT jobs

Cree los AWS IoT recursos para este dispositivo.

Si está preparando más de un dispositivo, este procedimiento debe realizarse en cada uno de ellos.

Para aprovisionar su dispositivo en AWS IoT:

En la ventana del terminal de su ordenador host local que esté conectado a la Raspberry Pi:

  1. Introduzca el siguiente comando para obtener la dirección del punto de conexión de datos del dispositivo de su Cuenta de AWS.

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

    El valor del punto de conexión no ha cambiado desde la última vez que ejecutó este comando. Al volver a ejecutar el comando aquí, será más fácil buscar y pegar el valor del punto de conexión de datos en el archivo de configuración utilizado en este tutorial.

    El comando describe-endpoint devuelve una respuesta similar a la siguiente. Anote el valor endpointAddress: lo necesitará más adelante.

    { "endpointAddress": "a3qjEXAMPLEffp-ats.iot.us-west-2.amazonaws.com" }
  2. uniqueThingNameSustitúyelo por un nombre único para tu dispositivo. Si desea realizar este tutorial con varios dispositivos, asigne a cada dispositivo su propio nombre. Por ejemplo, TestDevice01, TestDevice02, etc.

    Ingresa este comando para crear un nuevo recurso AWS IoT para tu Raspberry Pi.

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

    Como un recurso de AWS IoT cosa es una representación virtual de su dispositivo en la nube, podemos crear varios recursos de cosa AWS IoT para usarlos con diferentes propósitos. Todos pueden ser utilizados por el mismo dispositivo físico IoT para representar diferentes aspectos del dispositivo.

    nota

    Cuando desee proteger la política para varios dispositivos, puede utilizar ${iot:Thing.ThingName} en lugar del nombre del objeto estático, uniqueThingName.

    Estos tutoriales solo utilizarán un recurso a la vez por dispositivo. De esta forma, en estos tutoriales, representan las diferentes demostraciones, de modo que, después de crear los AWS IoT recursos para una demostración, puedas volver y repetir las demostraciones utilizando los recursos que creaste específicamente para cada una.

    Si tu recurso AWS IoT thing fue creado, el comando devuelve una respuesta como esta. Registre el valor thingArn para usarlo más adelante cuando cree el trabajo para ejecutarlo en este dispositivo.

    { "thingName": "uniqueThingName", "thingArn": "arn:aws:iot:us-west-2:57EXAMPLE833:thing/uniqueThingName", "thingId": "8ea78707-32c3-4f8a-9232-14bEXAMPLEfd" }
  3. En la ventana del terminal:

    1. Abra un editor de texto, como nano.

    2. Copie este documento JSON y péguelo en el editor de texto abierto.

      { "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iot:Connect" ], "Resource": [ "arn:aws:iot:us-west-2:123456789012:client/uniqueThingName" ] }, { "Effect": "Allow", "Action": [ "iot:Publish" ], "Resource": [ "arn:aws:iot:us-west-2:123456789012:topic/test/dc/pubtopic", "arn:aws:iot:us-west-2:123456789012:topic/$aws/events/job/*", "arn:aws:iot:us-west-2:123456789012:topic/$aws/events/jobExecution/*", "arn:aws:iot:us-west-2:123456789012:topic/$aws/things/uniqueThingName/jobs/*" ] }, { "Effect": "Allow", "Action": [ "iot:Subscribe" ], "Resource": [ "arn:aws:iot:us-west-2:123456789012:topicfilter/test/dc/subtopic", "arn:aws:iot:us-west-2:123456789012:topic/$aws/events/jobExecution/*", "arn:aws:iot:us-west-2:123456789012:topicfilter/$aws/things/uniqueThingName/jobs/*" ] }, { "Effect": "Allow", "Action": [ "iot:Receive" ], "Resource": [ "arn:aws:iot:us-west-2:123456789012:topic/test/dc/subtopic", "arn:aws:iot:us-west-2:123456789012:topic/$aws/things/uniqueThingName/jobs/*" ] }, { "Effect": "Allow", "Action": [ "iot:DescribeJobExecution", "iot:GetPendingJobExecutions", "iot:StartNextPendingJobExecution", "iot:UpdateJobExecution" ], "Resource": [ "arn:aws:iot:us-west-2:123456789012:topic/$aws/things/uniqueThingName" ] } ] }
    3. En el editor, en la Resource sección de cada declaración de política, us-west-2:57EXAMPLE833 sustituya por dos puntos (:)) y su Cuenta de AWS número de 12 dígitos. Región de AWS

    4. En el editor, en cada declaración de política, uniqueThingName sustitúyala por el nombre que le diste a este recurso.

    5. Guarde el archivo en el editor de texto como ~/policies/jobs_test_thing_policy.json.

      Si ejecuta este procedimiento para varios dispositivos, guarde el archivo con este nombre de archivo en cada dispositivo.

  4. uniqueThingNameSustitúyalo por el nombre de la cosa del dispositivo y, a continuación, ejecute este comando para crear una AWS IoT política que se adapte a ese dispositivo.

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

    Si se crea la política, el comando devuelve una respuesta como esta.

    { "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. uniqueThingNameSustitúyalo por el nombre de la cosa para el dispositivo y certificateArn por el certificateArn valor que guardó anteriormente en esta sección para este dispositivo y, a continuación, ejecute este comando para adjuntar la política al certificado del dispositivo.

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

    Si se ejecuta correctamente, este comando no devuelve nada.

  6. uniqueThingNameSustitúyalo por el nombre de la cosa del dispositivo, certificateArn sustitúyalo por el certificateArn valor que guardó anteriormente en esta sección y, a continuación, ejecute este comando para adjuntar el certificado del dispositivo al recurso de la AWS IoT cosa.

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

    Si se ejecuta correctamente, este comando no devuelve nada.

Una vez aprovisionada correctamente la Raspberry Pi, podrá repetir esta sección con otra Raspberry Pi de la prueba o, si ya se han aprovisionado todos los dispositivos, podrá continuar con Configure el AWS IoT Cliente del dispositivo para ejecutar el agente de trabajos.

Configure el AWS IoT Cliente del dispositivo para ejecutar el agente de trabajos

Este procedimiento crea un archivo de configuración para que el cliente del AWS IoT dispositivo ejecute el agente de trabajos:.

Nota: Si está preparando más de un dispositivo, este procedimiento debe realizarse en cada uno de ellos.

Para crear el archivo de configuración para probar el AWS IoT Cliente del dispositivo:
  1. En la ventana del terminal de su ordenador host local que esté conectado a la Raspberry Pi:

    1. Abra un editor de texto, como nano.

    2. Copie este documento JSON y péguelo en el editor de texto abierto.

      { "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. Sustituya el endpoint valor por el valor de punto final de datos del dispositivo Cuenta de AWS que encontró enAprovisiona tu dispositivo en AWS IoT Core.

    4. uniqueThingNameSustitúyelo por el nombre de la cosa que utilizaste para este dispositivo.

    5. Guarde el archivo en el editor de texto como ~/dc-configs/dc-jobs-config.json.

  2. Ejecute este comando para establecer los permisos de archivo del nuevo archivo de configuración.

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

No utilizará el cliente de prueba de MQTT para esta prueba. Si bien el dispositivo intercambiará los mensajes MQTT relacionados con las tareas AWS IoT, los mensajes sobre el progreso de la tarea solo se intercambian con el dispositivo que ejecuta la tarea. Como los mensajes sobre el progreso de la tarea solo se intercambian con el dispositivo en el que se ejecuta la tarea, no puede suscribirse a ellos desde otro dispositivo, como la consola. AWS IoT

Después de guardar el archivo de configuración, estará listo para continuar con Crea y ejecuta el trabajo en AWS IoT por AWS IoT Cliente del dispositivo.