Administración de 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.

Administración de trabajos

Utilice los trabajos para notificar a los dispositivos sobre una actualización de software o firmware. Puede usar la AWS IoT consola, la Operaciones de la API de administración y control del trabajo AWS Command Line Interface, o la AWS SDKspara crear y administrar trabajos.

Firma de código para trabajos

Al enviar código a los dispositivos, para que los dispositivos detecten si el código se ha modificado durante el tránsito, recomendamos firmar el archivo de códigos utilizando la AWS CLI. Para obtener instrucciones, consulte Creación y administración de trabajos mediante la AWS CLI.

Para obtener más información, consulte ¿Para qué sirve la firma de código AWS IoT? .

Documento de trabajo

Antes de crear un trabajo debe crear un documento del trabajo. Si utiliza la firma de código AWS IoT, debe cargar su documento de trabajo en un bucket de Amazon S3 versionado. Para obtener más información acerca de cómo crear un bucket de Amazon S3 y cargar archivos en él, consulte Introducción a Amazon Simple Storage Service en la Guía de introducción a Amazon S3.

sugerencia

Para ver ejemplos de documentos de trabajo, consulte el ejemplo de jobs-agent.js en el formulario AWS IoT SDK. JavaScript

Prefirmado URLs

Su documento de trabajo puede contener un Amazon S3 prefirmado URL que apunte a su archivo de código (u otro archivo). Los Amazon S3 prefirmados URLs son válidos solo durante un período de tiempo limitado y se generan cuando un dispositivo solicita un documento de trabajo. Como el documento prefirmado URL no se crea al crear el documento de trabajo, utilice URL en su lugar un marcador de posición en el documento de trabajo. Un marcador de posición URL tiene el siguiente aspecto:

${aws:iot:s3-presigned-url:https://s3.region.amazonaws.com/<bucket>/<code file>}

donde:

  • bucket es el bucket de Amazon S3 que contiene el archivo de código.

  • code file es la clave Amazon S3 del archivo de código.

Cuando un dispositivo solicita el documento de trabajo, AWS IoT genera el documento prefirmado URL y reemplaza el marcador URL de posición por el prefirmado. URL El documento del trabajo se envía al dispositivo.

IAMfunción para conceder permiso para descargar archivos de S3

Al crear un trabajo que utiliza Amazon S3 prefirmadoURLs, debe proporcionar un IAM rol. El rol debe conceder permiso para descargar archivos desde el bucket de Amazon S3 en el que se almacenaron los datos o las actualizaciones. El rol debe conceder permiso también para que AWS IoT asuma el rol.

Puede especificar un tiempo de espera opcional para el prefirmado. URL Para obtener más información, consulte. CreateJob

Conceda permiso a AWS IoT Jobs para que asuma su cargo
  1. Ve al centro de funciones de la IAM consola y elige tu función.

  2. En la pestaña Relaciones de confianza, selecciona Editar relación de confianza y sustituye el documento de política por lo siguienteJSON. Elija Actualizar la política de confianza.

    { "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": [ "iot.amazonaws.com" ] }, "Action": "sts:AssumeRole" } ] }
  3. Para protegerse contra el problema de la sustitución confusa, agregue las claves contextuales de condición global aws:SourceArn y aws:SourceAccount a la política.

    importante

    El aws:SourceArn debe ajustarse al formato: arn:aws:iot:region:account-id:*. Asegúrese de que region coincide con su AWS IoT región y account-id coincide con el ID de su cuenta de cliente. Para obtener más información, consulte Prevención de la sustitución confisa entre servicios.

    { "Effect": "Allow", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "iot.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "aws:SourceAccount": "123456789012" }, "ArnLike": { "aws:SourceArn": "arn:aws:iot:*:123456789012:job/*" } } } ] }
  4. Si su trabajo utiliza un documento de trabajo que es un objeto de Amazon S3, elija Permisos y utilice lo siguienteJSON. Esto añade una política que concede permiso para descargar archivos de su bucket de Amazon S3:

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "s3:GetObject", "Resource": "arn:aws:s3:::your_S3_bucket/*" } ] }

Prefirmado URL para la carga de archivos

Si sus dispositivos necesitan cargar archivos a un bucket de Amazon S3 durante la implementación de un trabajo, puede incluir el siguiente URL marcador de posición prefirmado en su documento de trabajo:

${aws:iot:s3-presigned-url-upload:https://s3.region.amazonaws.com/<bucket>/<key>}

Puede utilizar ${executionNumber} como máximo dos palabras clave de cada una de las ${thingName} palabras clave reservadas dentro del key atributo del marcador de carga de archivos que URL se encuentra en su documento de trabajo. ${jobId} El marcador de posición local que representa esas palabras clave reservadas en el key atributo se analizará y reemplazará cuando se cree la ejecución del trabajo. El uso de un marcador de posición local con palabras clave reservadas específicas para cada dispositivo garantiza que cada archivo cargado desde un dispositivo sea específico de ese dispositivo y no se sobrescriba con un archivo cargado similar desde otro dispositivo al que se dirija la misma implementación de tareas. Para obtener información sobre cómo solucionar problemas con los marcadores de posición locales incluidos en un URL marcador de posición prefirmado para cargar archivos durante la implementación de un trabajo, consulte. Mensajes de error generales de solución de problemas

nota

El nombre del bucket de Amazon S3 no puede contener el marcador de posición local que representa las palabras clave reservadas para el archivo cargado. El marcador de posición local debe estar ubicado en el key atributo.

Este URL marcador de posición prefirmado se convertirá en una carga prefirmada de Amazon S3 URL en su documento de trabajo cuando lo reciba un dispositivo. Sus dispositivos lo usarán para cargar archivos a un bucket de Amazon S3 de destino.

nota

Si el depósito y la clave de Amazon S3 no aparecen en el marcador de posición anteriorURL, AWS IoT Jobs generará automáticamente una clave para cada dispositivo con un máximo de dos de cada uno de los siguientes valores ${thingName}${jobId}, y${executionNumber}.

Prefirmado URL mediante el control de versiones de Amazon S3

Proteger la integridad de un archivo almacenado en un bucket de Amazon S3 es fundamental para garantizar la implementación segura de los trabajos con ese archivo en su flota de dispositivos. Con el uso del control de versiones de Amazon S3, puede añadir un identificador de versión para cada variante del archivo almacenado en su bucket de Amazon S3 para realizar un seguimiento de cada versión del archivo. Esto proporciona información sobre qué versión del archivo se implementa en su flota de dispositivos mediante AWS IoT Jobs. Para obtener más información sobre los buckets de Amazon S3 que utilizan el control de versiones, consulte Uso del control de versiones en buckets de Amazon S3.

Si el archivo está almacenado en Amazon S3 y el documento de trabajo contiene un URL marcador de posición prefirmado, AWS IoT Jobs generará uno prefirmado URL en el documento de trabajo con el depósito de Amazon S3, la clave del depósito y la versión del archivo almacenado en el depósito de Amazon S3. Este marcador prefirmado URL generado en el documento de trabajo sustituirá al URL marcador de posición prefirmado originalmente en el documento de trabajo. Si actualiza el archivo almacenado en su bucket de Amazon S3, se versionId crearán una nueva versión del archivo y versiones posteriores para indicar las actualizaciones realizadas y ofrecer la posibilidad de dirigirse a ese archivo específico en futuras implementaciones de trabajos.

Consulte los siguientes ejemplos para ver antes y durante el Amazon S3 prefirmado URLs en su documento de trabajo mediante: versionId

URLMarcador de posición prefirmado de Amazon S3 (antes de la implementación de Job)

//Virtual-hosted style URL ${aws:iot:s3-presigned-url:https://bucket-name.s3.region-code.amazonaws.com/key-name%3FversionId%3Dversion-id} //Path-style URL ${aws:iot:s3-presigned-url:https://s3.region-code.amazonaws.com/bucket-name/key-name%3FversionId%3Dversion-id}

Amazon S3 prefirmado URL (durante la implementación del trabajo)

//Virtual-hosted style URL ${aws:iot:s3-presigned-url:https://sample-bucket-name.s3.us-west-2.amazonaws.com/sample-code-file.png%3FversionId%3Dversion1} //Path-style ${aws:iot:s3-presigned-url:https://s3.us-west-2.amazonaws.com/sample-bucket-name/sample-code-file.png%3FversionId%3Dversion1}

Para obtener más información sobre los objetos de tipo ruta y hospedados virtualmente en Amazon S3URLs, consulte Virtual-hosted-style solicitudes y solicitudes de tipo Path.

nota

Si desea anexarlo versionId a un Amazon S3 prefirmadoURL, debe cumplir con la URL codificación compatible. AWS SDK for Java 2.x Para obtener más información, consulte Cambios en el análisis de Amazon S3 URIs de la versión 1 a la versión 2.