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.
Cree y gestione trabajos mediante el AWS CLI
En esta sección se describe cómo crear y administrar trabajos.
Creación de trabajos
Para crear un AWS IoT trabajo, utilice el CreateJob comando. El trabajo se pone en cola para la ejecución en los destinos (objetos o grupos de objetos) que especifique. Para crear un AWS IoT trabajo, necesita un documento de trabajo que pueda incluirse en el cuerpo de la solicitud o como un enlace a un documento de Amazon S3. Si el trabajo incluye la descarga de archivos mediante Amazon S3 prefirmadoURLs, necesitará un IAM rol: Amazon Resource Name (ARN) que tenga permiso para descargar el archivo y que conceda permiso al servicio AWS IoT Jobs para que asuma el rol.
Para obtener más información sobre la sintaxis al introducir la fecha y la hora mediante un API comando o el AWS CLI, consulte Timestamp.
Firma de código con trabajos
Si utiliza la firma de código para AWS IoT, debe iniciar un trabajo de firma de código e incluir el resultado en el documento de trabajo. Esto sustituirá al marcador de posición de firma de código del documento de trabajo, que es obligatorio como marcador de posición hasta que se sustituya por la ruta del archivo de código firmada mediante su Perfil de firma de código. El marcador de la firma de código tendrá el siguiente aspecto:
${aws:iot:code-sign-signature:s3://region.bucket/code-file@code-file-version-id}
Utilice el start-signing-jobcomando para crear un trabajo de firma de código. start-signing-job
devuelve un identificador de trabajo. Utilice el comando describe-signing-job para obtener la ubicación de Amazon S3 donde se almacena la firma. Después podrá descargar la firma desde Amazon S3. Para obtener más información sobre trabajos de firma de código, consulte la sección sobre Firma de código para AWS IoT.
El documento de trabajo debe contener un URL marcador de posición prefirmado para el archivo de código y el resultado de la JSON firma colocado en un bucket de Amazon S3 mediante el start-signing-job comando:
{ "presign": "${aws:iot:s3-presigned-url:https://s3.region.amazonaws.com/bucket/image}", }
Creación de un trabajo con un documento de trabajo
El siguiente comando muestra cómo crear un trabajo mediante un documento de trabajo (job-document.json
) almacenado en un bucket de Amazon S3 (jobBucket
) y un rol con permiso para descargar archivos de Amazon S3 (S3DownloadRole
).
aws iot create-job \ --job-id 010 \ --targets
arn:aws:iot:us-east-1:123456789012:thing/thingOne
\ --document-sourcehttps://s3.amazonaws.com/amzn-s3-demo-bucket/job-document.json
\ --timeout-config inProgressTimeoutInMinutes=100
\ --job-executions-rollout-config "{ \"exponentialRate\": { \"baseRatePerMinute\":50
, \"incrementFactor\":2
, \"rateIncreaseCriteria\": { \"numberOfNotifiedThings\":1000
, \"numberOfSucceededThings\":1000
}}, \"maximumPerMinute\":1000
}" \ --abort-config "{ \"criteriaList\": [ { \"action\": \"CANCEL
\", \"failureType\": \"FAILED
\", \"minNumberOfExecutedThings\":100
, \"thresholdPercentage\":20
}, { \"action\": \"CANCEL
\", \"failureType\": \"TIMED_OUT
\", \"minNumberOfExecutedThings\":200
, \"thresholdPercentage\":50
}]}" \ --presigned-url-config "{\"roleArn\":\"arn:aws:iam::123456789012:role/S3DownloadRole
\", \"expiresInSec\":3600}"
El trabajo se ejecuta en thingOne
.
El parámetro timeout-config
opcional especifica la cantidad de tiempo que cada dispositivo tiene para finalizar su ejecución del trabajo. El temporizador comienza cuando el estado de ejecución del trabajo se establece en IN_PROGRESS
. Si el estado de ejecución del trabajo no se establece en otro estado terminal antes de que se cumpla el plazo, se establecerá en TIMED_OUT
.
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 una tarea permanece en ese IN_PROGRESS
estado durante más tiempo que este intervalo, se produce un error y pasa al TIMED_OUT
estado terminal. AWS IoT también publica una MQTT notificación.
Para obtener más información acerca de cómo crear configuraciones sobre despliegues de trabajos y anulaciones, consulte Despliegue de trabajos y configuración de anulaciones.
nota
Los documentos de trabajo que está especificados como archivos de Amazon S3 se recuperan en el momento en el que crea el trabajo. Si cambia el contenido del archivo de Amazon S3 que usó como origen de su documento de trabajo después de haberlo creado, no cambia lo que se envía a los destinos del trabajo.
Actualización de un trabajo
Para actualizar un trabajo se utiliza el comando UpdateJob. Puede actualizar los campos description
, presignedUrlConfig
, jobExecutionsRolloutConfig
, abortConfig
y timeoutConfig
para un trabajo.
aws iot update-job \ --job-id 010 \ --description "updated description" \ --timeout-config inProgressTimeoutInMinutes=
100
\ --job-executions-rollout-config "{ \"exponentialRate\": { \"baseRatePerMinute\":50
, \"incrementFactor\":2
, \"rateIncreaseCriteria\": { \"numberOfNotifiedThings\":1000
, \"numberOfSucceededThings\":1000
}, \"maximumPerMinute\":1000
}}" \ --abort-config "{ \"criteriaList\": [ { \"action\": \"CANCEL
\", \"failureType\": \"FAILED
\", \"minNumberOfExecutedThings\":100
, \"thresholdPercentage\":20
}, { \"action\": \"CANCEL
\", \"failureType\": \"TIMED_OUT
\", \"minNumberOfExecutedThings\":200
, \"thresholdPercentage\":50
}]}" \ --presigned-url-config "{\"roleArn\":\"arn:aws:iam::123456789012:role/S3DownloadRole
\", \"expiresInSec\":3600}"
Para obtener más información, consulte Despliegue de trabajos y configuración de anulaciones.
Cancelación de un trabajo
Para cancelar un trabajo se utiliza el comando CancelJob. La cancelación de un trabajo AWS IoT impide que se ejecuten nuevos trabajos para el trabajo. También cancela cualquier ejecución de un trabajo que se produzca en un QUEUED
estado determinado. AWS IoT mantiene intactas las ejecuciones de tareas en estado terminal porque el dispositivo ya ha completado la tarea. Si el estado de la ejecución de un trabajo es IN_PROGRESS
, también se mantendrá intacta a menos que se use el parámetro opcional --force
.
El siguiente comando muestra cómo cancelar un trabajo con ID 010.
aws iot cancel-job --job-id 010
El comando muestra el resultado siguiente:
{ "jobArn": "string", "jobId": "string", "description": "string" }
Cuando se cancela un trabajo, se cancelan las ejecuciones de trabajos con estado QUEUED
. Las ejecuciones de trabajos en estado IN_PROGRESS
se cancelarán, pero solo si especifica el parámetro opcional --force
. Las ejecuciones de trabajo con un estado terminal no se cancelarán.
aviso
Si se cancela un trabajo en estado IN_PROGRESS
(al establecer el parámetro --force
), se cancelarán las ejecuciones de trabajos en curso, y se hará que el dispositivo que está ejecutando el trabajo no pueda actualizar el estado de ejecución del trabajo. Actúe con precaución y asegúrese de que cada dispositivo que esté ejecutando un trabajo cancelado pueda recuperarse a un estado válido.
En última instancia, el estado de un trabajo cancelado o de una de sus ejecuciones es uniforme. AWS IoT deja de programar las ejecuciones de nuevos QUEUED
trabajos y las ejecuciones de trabajos para ese trabajo en los dispositivos lo antes posible. Cambiar el estado de la ejecución de un trabajo a CANCELED
puede llevar algo de tiempo, según el número de dispositivos y otros factores.
Si un trabajo se cancela porque cumple los criterios definidos por un objeto AbortConfig
, el servicio añade valores rellenados automáticamente para los campos comment
y reasonCode
. Puede crear sus propios valores reasonCode
cuando el trabajo se cancela por iniciativa del usuario.
Cancelación de una ejecución de trabajo
Para cancelar la ejecución de un trabajo en un dispositivo, utilice el comando CancelJobExecution. Este cancela la ejecución de un trabajo que se encuentra en estado QUEUED
. Si desea cancelar la ejecución de un trabajo en curso, debe utilizar el parámetro --force
.
El siguiente comando muestra cómo cancelar la ejecución de un trabajo del trabajo 010 que se ejecuta en myThing
.
aws iot cancel-job-execution --job-id 010 --thing-name myThing
El comando no muestra ninguna salida.
Se cancela la ejecución de un trabajo que se encuentra en estado QUEUED
. La ejecución de un trabajo en estado IN_PROGRESS
se cancela, pero solo si especifica el parámetro opcional --force
. Las ejecuciones de trabajo con un estado terminal no se pueden cancelar.
aviso
Cuando se cancela la ejecución de un trabajo con estado IN_PROGRESS
, el dispositivo no puede actualizar el estado de ejecución del trabajo. Actúe con precaución y asegúrese de que el dispositivo pueda recuperarse a un estado válido.
Si la ejecución del trabajo se encuentra en estado final, o si la ejecución del trabajo está en estado IN_PROGRESS
y el parámetro --force
no está definido en true
, el comando genera InvalidStateTransitionException
.
El estado de la ejecución de un trabajo cancelada es a la larga coherente. Cambiar el estado de la ejecución de un trabajo a CANCELED
puede llevar algo de tiempo, dependiendo de varios factores.
Eliminación de un trabajo
Para eliminar un trabajo y sus ejecuciones, utilice el comando DeleteJob. De forma predeterminada, solo puede eliminar un trabajo en estado final (SUCCEEDED
o CANCELED
). En caso contrario, se produce una excepción. Podrá eliminar un trabajo con estado IN_PROGRESS
, aunque solo si el parámetro force
está definido en true
.
Para eliminar un trabajo, ejecute el siguiente comando:
aws iot delete-job --job-id 010 --force|--no-force
El comando no muestra ninguna salida.
aviso
Cuando se elimina un trabajo que se encuentra en estado IN_PROGRESS
, el dispositivo que está implementando el trabajo no puede obtener acceso a la información del trabajo ni actualizar el estado de su ejecución. Actúe con precaución y asegúrese de que cada dispositivo que implemente un trabajo eliminado pueda recuperarse a un estado válido.
Eliminar un trabajo podría llevar algún tiempo, en función del número de ejecuciones de trabajos creadas para el trabajo y otros factores. Aunque el trabajo se esté eliminando, como estado del trabajo se muestra DELETION_IN_PROGRESS
. Si se intenta eliminar o cancelar un trabajo cuyo estado ya es DELETION_IN_PROGRESS
, se producirá un error.
Solo puede haber 10 trabajos con estado DELETION_IN_PROGRESS
al mismo tiempo. De lo contrario, se genera LimitExceededException
.
Obtención de un documento de trabajo
Para recuperar un documento de trabajo para un trabajo, utilice el comando GetJobDocument. Un documento de trabajo es una descripción de las operaciones remotas que deben ejecutar los dispositivos.
Para obtener un documento de trabajo, ejecute el siguiente comando:
aws iot get-job-document --job-id 010
El comando devuelve el documento de trabajo para el trabajo especificado:
{ "document": "{\n\t\"operation\":\"install\",\n\t\"url\":\"http://amazon.com/firmWareUpate-01\",\n\t\"data\":\"${aws:iot:s3-presigned-url:https://s3.amazonaws.com/amzn-s3-demo-bucket/datafile}\"\n}" }
nota
Cuando utilizas este comando para recuperar un documento de trabajo, los marcadores de posición URLs no se sustituyen por Amazon S3 prefirmado. URLs Cuando un dispositivo llama a la GetPendingJobExecutionsAPIoperación, el marcador de posición URLs se sustituye por Amazon S3 prefirmado URLs en el documento de trabajo.
Enumeración de trabajos
Para obtener una lista de todos los trabajos que tiene Cuenta de AWS, utilice el ListJobs comando. Los datos del trabajo y los datos de ejecución del trabajo se conservan durante un tiempo limitado. Ejecute el siguiente comando para enumerar todos los trabajos de su cuenta Cuenta de AWS:
aws iot list-jobs
El comando devuelve todos los trabajos en su cuenta ordenados por estado del trabajo:
{ "jobs": [ { "status": "IN_PROGRESS", "lastUpdatedAt": 1486687079.743, "jobArn": "arn:aws:iot:us-east-1:123456789012:job/013", "createdAt": 1486687079.743, "targetSelection": "SNAPSHOT", "jobId": "013" }, { "status": "SUCCEEDED", "lastUpdatedAt": 1486685868.444, "jobArn": "arn:aws:iot:us-east-1:123456789012:job/012", "createdAt": 1486685868.444, "completedAt": 148668789.690, "targetSelection": "SNAPSHOT", "jobId": "012" }, { "status": "CANCELED", "lastUpdatedAt": 1486678850.575, "jobArn": "arn:aws:iot:us-east-1:123456789012:job/011", "createdAt": 1486678850.575, "targetSelection": "SNAPSHOT", "jobId": "011" } ] }
Descripción de un trabajo
Para obtener el estado de un trabajo, ejecute el comando DescribeJob. El siguiente comando muestra cómo describir un trabajo:
$ aws iot describe-job --job-id 010
El comando devuelve el estado de un trabajo especificado. Por ejemplo:
{ "documentSource": "https://s3.amazonaws.com/amzn-s3-demo-bucket/job-document.json", "job": { "status": "IN_PROGRESS", "jobArn": "arn:aws:iot:us-east-1:123456789012:job/010", "targets": [ "arn:aws:iot:us-east-1:123456789012:thing/myThing" ], "jobProcessDetails": { "numberOfCanceledThings": 0, "numberOfFailedThings": 0, "numberOfInProgressThings": 0, "numberOfQueuedThings": 0, "numberOfRejectedThings": 0, "numberOfRemovedThings": 0, "numberOfSucceededThings": 0, "numberOfTimedOutThings": 0, "processingTargets": [ arn:aws:iot:us-east-1:123456789012:thing/thingOne, arn:aws:iot:us-east-1:123456789012:thinggroup/thinggroupOne, arn:aws:iot:us-east-1:123456789012:thing/thingTwo, arn:aws:iot:us-east-1:123456789012:thinggroup/thinggroupTwo ] }, "presignedUrlConfig": { "expiresInSec": 60, "roleArn": "arn:aws:iam::123456789012:role/S3DownloadRole" }, "jobId": "010", "lastUpdatedAt": 1486593195.006, "createdAt": 1486593195.006, "targetSelection": "SNAPSHOT", "jobExecutionsRolloutConfig": { "exponentialRate": { "baseRatePerMinute": integer, "incrementFactor": integer, "rateIncreaseCriteria": { "numberOfNotifiedThings": integer, // Set one or the other "numberOfSucceededThings": integer // of these two values. }, "maximumPerMinute": integer } }, "abortConfig": { "criteriaList": [ { "action": "string", "failureType": "string", "minNumberOfExecutedThings": integer, "thresholdPercentage": integer } ] }, "timeoutConfig": { "inProgressTimeoutInMinutes": number } } }
Enumeración de ejecuciones para un trabajo
Un trabajo que se ejecuta en un dispositivo específico se representa mediante un objeto de ejecución de trabajo. Ejecute el comando ListJobExecutionsForJob para enumerar todas las ejecuciones de trabajo para un trabajo. A continuación se muestra cómo enumerar las ejecuciones para un trabajo:
aws iot list-job-executions-for-job --job-id 010
El comando devuelve una lista de ejecuciones de trabajo:
{ "executionSummaries": [ { "thingArn": "arn:aws:iot:us-east-1:123456789012:thing/thingOne", "jobExecutionSummary": { "status": "QUEUED", "lastUpdatedAt": 1486593196.378, "queuedAt": 1486593196.378, "executionNumber": 1234567890 } }, { "thingArn": "arn:aws:iot:us-east-1:123456789012:thing/thingTwo", "jobExecutionSummary": { "status": "IN_PROGRESS", "lastUpdatedAt": 1486593345.659, "queuedAt": 1486593196.378, "startedAt": 1486593345.659, "executionNumber": 4567890123 } } ] }
Enumeración de ejecuciones de trabajo para un objeto
Ejecute el comando ListJobExecutionsForThing para enumerar todas las ejecuciones de trabajo que se ejecutan en un objeto. A continuación se muestra cómo listar las ejecuciones de trabajos para un objeto:
aws iot list-job-executions-for-thing --thing-name thingOne
El comando devuelve una lista de ejecuciones de trabajo que se ejecutan o se han ejecutado en el objeto especificado:
{ "executionSummaries": [ { "jobExecutionSummary": { "status": "QUEUED", "lastUpdatedAt": 1486687082.071, "queuedAt": 1486687082.071, "executionNumber": 9876543210 }, "jobId": "013" }, { "jobExecutionSummary": { "status": "IN_PROGRESS", "startAt": 1486685870.729, "lastUpdatedAt": 1486685870.729, "queuedAt": 1486685870.729, "executionNumber": 1357924680 }, "jobId": "012" }, { "jobExecutionSummary": { "status": "SUCCEEDED", "startAt": 1486678853.415, "lastUpdatedAt": 1486678853.415, "queuedAt": 1486678853.415, "executionNumber": 4357680912 }, "jobId": "011" }, { "jobExecutionSummary": { "status": "CANCELED", "startAt": 1486593196.378, "lastUpdatedAt": 1486593196.378, "queuedAt": 1486593196.378, "executionNumber": 2143174250 }, "jobId": "010" } ] }
Descripción de una ejecución de trabajo
Ejecute el comando DescribeJobExecution para obtener el estado de la ejecución de un trabajo. Debe especificar un ID de trabajo y el nombre del objeto y, opcionalmente, un número de ejecución para identificar la ejecución del trabajo. A continuación se muestra cómo describir la ejecución de un trabajo:
aws iot describe-job-execution --job-id 017 --thing-name thingOne
El comando devuelve JobExecution
. Por ejemplo:
{ "execution": { "jobId": "017", "executionNumber": 4516820379, "thingArn": "arn:aws:iot:us-east-1:123456789012:thing/thingOne", "versionNumber": 123, "createdAt": 1489084805.285, "lastUpdatedAt": 1489086279.937, "startedAt": 1489086279.937, "status": "IN_PROGRESS", "approximateSecondsBeforeTimedOut": 100, "statusDetails": { "status": "IN_PROGRESS", "detailsMap": { "percentComplete": "10" } } } }
Eliminación de una ejecución de trabajo
Ejecute el comando DeleteJobExecution para eliminar la ejecución de un trabajo. Debe especificar un ID de trabajo, un nombre de objeto y un número de ejecución para identificar la ejecución del trabajo. A continuación se muestra cómo eliminar la ejecución de un trabajo:
aws iot delete-job-execution --job-id 017 --thing-name thingOne --execution-number 1234567890 --force|--no-force
El comando no muestra ninguna salida.
De forma predeterminada, el estado de ejecución de los trabajos debe ser QUEUED
o un estado final (SUCCEEDED
, FAILED
, REJECTED
, TIMED_OUT
, REMOVED
o CANCELED
). En caso contrario, se produce un error. Para eliminar la ejecución de un trabajo con estado IN_PROGRESS
, puede establecer el parámetro force
en true
.
aviso
Cuando se elimina la ejecución de un trabajo con estado IN_PROGRESS
, el dispositivo que está ejecutando el trabajo no puede obtener acceso a la información del trabajo ni actualizar el estado de su ejecución. Actúe con precaución y asegúrese de que el dispositivo pueda recuperarse a un estado válido.