Jobs - AWS IoT Core

Si proporcionásemos una traducción de la versión en inglés de la guía, prevalecerá la versión en inglés de la guía si hubiese algún conflicto. La traducción se proporciona mediante traducción automática.

Jobs

Los trabajos de AWS IoT se pueden usar para definir un conjunto de operaciones remotas que se envían a uno o más dispositivos conectados a AWS IoT o que se ejecutan en uno o más de esos dispositivos.

sugerencia

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

Conceptos clave de trabajos

tarea

Un trabajo es una operación remota que se envía a uno o varios dispositivos conectados a AWS IoT y se ejecuta en ellos. Por ejemplo, puede definir un trabajo que indique a un conjunto de dispositivos descargar e instalar actualizaciones de firmware y aplicaciones, reiniciar, rotar certificados o realizar operaciones remotas de solución de problemas.

documento de trabajo

Para crear un trabajo, primero debe crear un documento de trabajo, que es una descripción de las operaciones remotas que deben realizar los dispositivos.

Los documentos de trabajo son documentos JSON con codificación UTF-8 y deben contener la información que necesitan los dispositivos para realizar un trabajo. Un documento de trabajo contendrá una o más URL en las que el dispositivo puede descargar una actualización o cualquier otro dato. El documento de trabajo puede almacenarse en un bucket de Amazon S3 o insertarse con el comando que crea el trabajo.

target

Cuando cree un trabajo, debe especificar una lista de destinos que son los dispositivos que deben realizar las operaciones. Los destinos pueden ser objetos, grupos de objetos o ambos. El servicio Jobs de AWS IoT envía un mensaje a cada destino para informarle de que hay un trabajo disponible.

ejecución de trabajo

Una ejecución de trabajo es una instancia de un trabajo en un dispositivo de destino. El objetivo inicia una ejecución de trabajo descargando el documento de trabajo. A continuación, realiza las operaciones especificadas en el documento e informa de su progreso a AWS IoT. Un número de ejecución es un identificador único de una ejecución de trabajo en un destino específico. El servicio Jobs proporciona comandos para realizar un seguimiento del progreso de una ejecución de trabajo en un destino y del progreso de un trabajo en todos los destinos.

trabajo de instantánea

De forma predeterminada, un trabajo se envía a todos los destinos especificados al crearlo. Después de que esos destinos finalicen el trabajo (o informen de que no pueden hacerlo), el trabajo se completa.

trabajo continuo

Un trabajo continuo se envía a todos los destinos especificados al crearlo. Sigue ejecutándose y se envía a todos los nuevos dispositivos (objetos) que se añaden al grupo de destino. Por ejemplo, puede usarse un trabajo continuo para incorporar o actualizar dispositivos a medida que se añaden a un grupo. Puede hacer que un trabajo sea continuo estableciendo un parámetro opcional al crearlo.

despliegues

Puede especificar la rapidez con la que se notifica a los destinos la ejecución de un trabajo pendiente. Esto le permite crear un despliegue por etapas para administrar mejor las actualizaciones, los reinicios y otras operaciones.

Se puede añadir el campo siguiente a la solicitud CreateJob para especificar el número máximo de destinos de trabajo de los que se informará por minuto. En este ejemplo se establece una tasa de despliegue estática.

"jobExecutionRolloutConfig": { "maximumPerMinute": "integer" }

También puede definir una tasa de despliegue variable con el campo exponentialRate. En el siguiente ejemplo se crea un despliegue que tiene una tasa exponencial.

"jobExecutionsRolloutConfig": { "exponentialRate": { "baseRatePerMinute": integer, "incrementFactor": integer, "rateIncreaseCriteria": { "numberOfNotifiedThings": integer, // Set one or the other "numberOfSucceededThings": integer // of these two values. }, "maximumPerMinute": integer } }

Para obtener más información acerca de cómo configurar despliegues de trabajos, consulte la sección sobre despliegue de trabajos y configuración de anulaciones.

abort

Puede crear un conjunto de condiciones para anular despliegues una vez se cumplan los criterios que especifique. Para obtener más información, consulte Despliegue de trabajos y configuración de anulaciones.

URL prefirmadas

Para permitir a un dispositivo acceso seguro y por tiempo limitado a los datos más allá de los incluidos en el propio documento de trabajo, puede usar URL de Amazon S3 prefirmadas. Puede colocar sus datos en un bucket de Amazon S3 y añadir un enlace de marcador de posición para los datos en el documento de trabajo. Cuando el servicio Jobs recibe una solicitud de documento de trabajo, analiza ese documento en busca de enlaces de marcador de posición y los sustituye por URL de Amazon S3 prefirmadas.

El enlace de marcador de posición tiene la forma siguiente:

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

"where" bucket es el nombre del bucket y key es el objeto del bucket al que está vinculando.

En el Regiones de Pekín y Ningxia, las URL prefirmadas sólo funcionan si el propietario del recurso tiene una licencia ICP. Para obtener más información, consulte Amazon Simple Storage Service en la documentación Getting Started with AWS Services in China .

tiempos de espera

Los tiempos de espera de trabajos permiten recibir una notificación cada vez que la ejecución de un trabajo se bloquea en el estado IN_PROGRESS durante un periodo de tiempo más largo de lo previsto. Existen dos tipos de temporizadores: temporizadores en curso y temporizadores de pasos.

Al crear una tarea, puede establecer un valor para la propiedad inProgressTimeoutInMinutes del objeto TimeoutConfig opcional. El temporizador en curso no se puede actualizar y se aplica a todas las ejecuciones de trabajos para el trabajo. Cuando la ejecución de un trabajo permanece en estado IN_PROGRESS durante un periodo superior a este intervalo, la ejecución del trabajo producirá un error y cambiará al estado final TIMED_OUT. AWS IoT también publica una notificación MQTT.

También puede establecer un temporizador de pasos para la ejecución de un trabajo especificando un valor para stepTimeoutInMinutes al llamar a UpdateJobExecution. El temporizador de pasos se aplica únicamente a la ejecución del trabajo que actualice. Puede establecer un nuevo valor para este temporizador cada vez que actualice la ejecución de un trabajo. También puede crear un temporizador de pasos al llamar a StartNextPendingJobExecution. Si la ejecución del trabajo permanece en estado IN_PROGRESS durante un periodo superior a este intervalo del temporizador de pasos, generará un error y cambiará al estado terminal TIMED_OUT. El temporizador de pasos no tiene ningún efecto en el temporizador en curso que establezca al crear un trabajo.

El siguiente diagrama y la descripción ilustran las formas en las que los tiempos de espera en curso y por pasos interactúan entre sí.

Creación de trabajo: CreateJob establece un temporizador en curso que caduca en veinte minutos. Este temporizador se aplica a todas las ejecuciones de trabajos y no se puede actualizar.

12:00 p. m.: La ejecución del trabajo se inicia y cambia a IN_PROGRESS estado. El temporizador en curso se pone en funcionamiento.

12:05 de la tarde: UpdateJobExecution crea un temporizador de pasos con un valor de 7 minutos. Si no se crea un temporizador de pasos nuevo, la ejecución del trabajo agota su tiempo a las 12:12 PM (00:12 h).

12:10 de la tarde: UpdateJobExecution crea un nuevo temporizador de pasos con un valor de 5 minutos. El temporizador del paso anterior se descarta. Si no se crea un temporizador de pasos nuevo, la ejecución del trabajo agota su tiempo a las 12:15 PM (00:15 h).

12:13 horas: UpdateJobExecution crea un nuevo temporizador de pasos con un valor de 9 minutos. El tiempo de ejecución del trabajo se agota a las 12:20 (00:20 h) ya que el temporizador en curso vence a las 12:20 (00:20 h). El temporizador de pasos no puede superar el límite absoluto creado por el temporizador en curso.

UpdateJobExecution también puede descartar un temporizador de pasos que ya se ha creado mediante la creación de un nuevo temporizador de pasos con un valor de -1.