AWS IoT
开发人员指南
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。请点击 Amazon AWS 入门,可查看中国地区的具体差异

工作

AWS IoT Jobs 是一项服务,允许您定义一组任务 – 发送到已连接到 AWS IoT 的一个或多个设备并在这些设备上执行的远程操作。例如,您可以定义一个任务,该任务指示一组设备下载并安装应用程序或固件更新、重启、轮换证书或执行远程故障排除操作。

要创建任务,您可创建一个任务文档 (它是要执行的远程操作的说明),并指定应执行这些操作的目标 的列表。目标可以是单个事物和/或事物组

AWS IoT Jobs 会发送消息,通知目标任务可用。目标通过以下方式开始执行 任务:下载任务文档、执行它指定的操作并向 AWS IoT 报告其进度。Jobs 服务提供的命令可跟踪特定目标或某些任务的所有目标执行任务的进度。

管理任务

使用 Jobs HTTPS API 创建和管理任务。有关更多信息,请参阅 任务管理和控制 API

持续任务

默认情况下,任务将发送到您在创建该任务时指定的所有目标。在这些目标完成任务 (或报告它们无法执行此操作) 后,任务即完成。不过,您可以通过在创建任务时设置可选参数,来使任务成为持续 任务。持续任务会持续运行,在目标中检测到更改时即执行。例如,当代表设备的某个事物添加到目标组时,会在该设备上运行任务,即使是组中原有的全部事物已经完成了任务。在将设备添加到组时,可使用持续任务加入或升级设备。

配置部署

配置部署更多信息 (1)
配置部署

在创建任务时,您可以指定向目标发送待处理任务执行通知的速度。这样,您就可以创建一个分段部署以更好地管理更新、重启和其他操作。

更多信息 (1)

可将以下字段添加到 CreateJob 请求:

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

任务文档

任务文档更多信息 (2)
任务文档

任务文档是 UTF-8 编码的 JSON 文档,其中包含您的设备执行任务所需的信息。任务文档最有可能包含一个或多个 URL,设备可从这些 URL 下载更新或其他数据。任务文档本身可存储在 Amazon S3 存储桶中,或者与用于创建任务的命令内联包含。

更多信息 (2)

要使设备能够对任务文档本身包含的数据之外的其他数据进行限定时间的安全访问,您可以使用预签名 Amazon S3 URL。您可以将数据放置在 Amazon S3 存储桶中,并添加一个指向任务文档中的数据的占位符链接。当 Jobs 服务收到任务文档的请求时,它会分析任务文档以查找占位符链接并将其替换为预签名 Amazon S3 URL。

占位符链接采用以下形式:

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

其中 bucket 是您的存储桶名称,key 是您链接到的存储桶中的对象。

在创建使用预签名 Amazon S3 URL 的任务时,您必须提供一个 IAM 角色 ARN 来授予从存储数据或更新的 Amazon S3 存储桶中下载文件的权限。该角色还必须向 AWS IoT 授予代入角色的权限。

要向 Jobs 授予代入角色的权限,请执行以下操作:

  1. 登录 AWS 管理控制台 并通过以下网址打开 IAM 控制台 https://console.amazonaws.cn/iam/

  2. 在左侧导航窗格中,选择 Roles

  3. 搜索您的角色,然后选择它。

  4. 选择 Trust Relationships 选项卡。

  5. 选择编辑信任关系按钮。

  6. 编辑信任关系页面上,将策略文档替换为以下 JSON:

    { "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": [ "iot.amazonaws.com" ] }, "Action": "sts:AssumeRole" } ] }
  7. 选择 Update Trust Policy

您可以选择性地指定预签名 URL 的超时值。有关更多信息,请参阅 CreateJob

创建任务

CreateJob更多信息 (3)
CreateJob

可使用 CreateJob 命令创建任务。任务将进行排队以便在您指定的目标 (事物或事物组) 上执行。要创建任务,您需要一个任务文档,该文档可包含在请求的正文中或作为指向 Amazon S3 文档的链接。如果任务包含使用预签名 Amazon S3 URL 下载文件,则您需要一个 IAM 角色 ARN,它具有下载文件的权限并会向 AWS IoT 授予代入角色的权限。

更多信息 (3)

如果您有一个存储在名为 jobBucket 的 Amazon S3 存储桶中的名为 job-document.json 的文件,并且具有从 Amazon S3 下载文件的权限的角色名为 S3DownloadRole,则用于创建任务的 CLI 命令将类似于以下内容:

aws iot create-job \ --job-id 010 \ --targets arn:aws:iot:us-east-1:123456789012:thing/thingOne \ --document-source https://s3.amazonaws.com/jobBucket/job-document.json \ --presigned-url-config "{\"roleArn\":\"arn:aws:iam::123456789012:role/S3DownloadRole\", \"expiresInSec\":3600}"

如果您需要指定内联任务文档,可使用 --document 参数而非 --document-source 参数。

将按任务在 --targets 列表中的显示顺序发送任务并在目标上执行任务。例如,如果目标列表为:

[ 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 ]

则将在 thingOne 上执行任务,随后依次在 thinggroupOne 中的事物、thingTwothinggroupTwo 中的事物上执行。

注意

在您创建任务时将检索指定为 Amazon S3 文件的任务文档。在创建任务后,更改用作任务文档源的 Amazon S3 文件的内容时不会更改发送到任务目标的内容。

取消任务

CancelJob更多信息 (4)
CancelJob

可使用 CancelJob 命令取消任务。取消任务将使 AWS IoT 停止为任务部署任何新的任务执行。这还将取消处于 QUEUED 状态的任何任务执行。IoT 会将任何任务执行保留为 IN_PROGRESS 状态或将最终状态保持不变,因为设备已在执行任务或已完成任务。

更多信息 (4)
aws iot cancel-job --job-id 010

该命令不显示任何输出。

将取消处于 QUEUED 状态的任务执行,而不会取消处于 IN_PROGRESS 或最终状态的任务执行。已取消任务或其某个任务执行的状态最终是一致的 - IoT 将停止计划新的任务执行,并且不会尽快将该任务的 QUEUED 任务执行提供给设备。不过,将任务执行的状态更改为 CANCELED 可能需要一些时间,具体取决于设备数和其他因素。

获取任务文档

GetJobDocument更多信息 (5)
GetJobDocument

可使用 GetJobDocument 命令检索任务的任务文档。

更多信息 (5)
aws iot get-job-document --job-id 010

该命令返回指定任务的任务文档:

{ "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/job-test-bucket/datafile}\"\n}" }

注意

在使用此命令检索任务文档时,所有占位符 URL 都不会替换为预签名 Amazon S3 URL。占位符 URL 将替换为在设备调用 GetPendingJobExecutions MQTT API 时返回的任务文档中的预签名 Amazon S3 URL。

跟踪任务

列出任务

ListJobs更多信息 (6)
ListJobs

可使用 ListJobs 命令获取 AWS 账户中的所有任务的列表。请注意,任务数据和任务执行数据将在 90 天后被清除。

更多信息 (6)
aws iot list-jobs

该命令将列出您账户中按任务状态排序的所有任务:

{ "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": "COMPLETED", "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" } ] }

描述任务

DescribeJob更多信息 (7)
DescribeJob

可使用 DescribeJob 命令获取特定任务的状态。

更多信息 (7)
$ aws iot describe-job --job-id 010

该命令返回指定任务的状态:

{ "documentSource": "https://s3.amazonaws.com/job-test-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, "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" } }

列出任务的执行

ListJobExecutionsForJob更多信息 (8)
ListJobExecutionsForJob

在特定设备上运行的任务由任务执行对象表示。可使用 ListJobExecutionsForJob 命令列出任务的所有任务执行。

更多信息 (8)
aws iot list-job-executions-for-job --job-id 010

该命令将返回任务执行的列表:

{ "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 } } ] }

列出事物的任务执行

ListJobExecutionsForThing更多信息 (9)
ListJobExecutionsForThing

可使用 ListJobExecutionsForThing 命令列出正在事物上运行的所有任务执行。

更多信息 (9)
aws iot list-job-executions-for-thing --thing-name thingOne

该命令将返回正在指定事物上运行的或在指定事物上运行过的任务执行的列表:

{ "executionSummaries": [ { "jobExecutionSummary": { "status": "QUEUED", "lastUpdatedAt": 1486687082.071, "queuedAt": 1486687082.071, "executionNumber": 9876543210 }, "jobId": "013" }, { "jobExecutionSummary": { "status": "IN_PROCESS", "startAt": 1486685870.729, "lastUpdatedAt": 1486685870.729, "queuedAt": 1486685870.729, "executionNumber": 1357924680 }, "jobId": "012" }, { "jobExecutionSummary": { "status": "COMPLETED", "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" } ] }

描述任务执行

DescribeJobExecution更多信息 (10)
DescribeJobExecution

可使用 DescribeJobExecution 命令获取特定任务执行的状态。您可以指定任务 ID 和事物名称 (也可以选择指定执行编号) 来标识任务执行。

任务的执行状态必须为 QUEUEDIN_PROGRESS

更多信息 (10)
aws iot describe-job-execution --job-id 017 --thing-name thingOne

该命令将返回 JobExecution

{ "execution": { "jobId": "017", "executionNumber": 4516820379, "thingArn": "arn:aws:iot:us-east-1:123456789012:thing/thingOne", "createdAt": 1489084805.285, "lastUpdatedAt": 1489086279.937, "startedAt": 1489086279.937, "status": "IN_PROGRESS", "statusDetails": { "status": "IN_PROGRESS", "detailsMap": { "percentComplete": "10" } } } }

任务事件

当任务待处理、已完成或已取消时,或者当设备在执行任务时报告成功或失败时,Jobs 还将发布到 MQTT 协议上的预留主题。设备或管理和监控应用程序可以通过订阅这些主题来跟踪任务的状态。

有关发布和订阅 MQTT 主题的更多信息,请参阅AWS IoT 的消息代理

任务待处理更多信息 (11)
任务待处理

当某个事物的待处理任务执行列表中添加或删除了任务时,或者对列表中任务的顺序有更改时,AWS IoT Jobs 会在 MQTT 主题上发布消息:

  • $aws/things/thingName/jobs/notify

  • $aws/things/thingName/jobs/notify-next

更多信息 (11)

消息包含以下示例负载:

$aws/things/thingName/jobs/notify

{ "jobs" : { "JobExecutionState": [ JobExecutionSummary ... ], }, "timestamp": timestamp, }

$aws/things/thingName/jobs/notify-next

{ "execution" : JobExecutionData, "timestamp": timestamp, }
任务已完成/已取消更多信息 (12)
任务已完成/已取消

当任务已完成或已取消时,AWS IoT Jobs 会在 MQTT 主题上发布消息:

  • $aws/events/job/jobID/completed

  • $aws/events/job/jobID/canceled

更多信息 (12)

消息包含以下示例负载:

{ "eventType": "job", "eventId": "UUID", "timestamp": timestamp, "operation": "completed|canceled", "jobId": "043", "status": "COMPLETED|CANCELED", "targets": [ "arn:aws:iot:us-west-2:123456789012:thing/xxxxxx", "arn:aws:iot:us-west-2:123456789012:thing/yyyyyy", "arn:aws:iot:us-west-2:123456789012:thing/zzzzzz" ], "description": "sample description", "completedAt": "14889914167084", "createdAt": "14889025672199", "lastUpdatedAt": "14889734904359", "jobProcessDetails": { "numberOfCanceledThings": 1, "numberOfSucceededThings": 1, "numberOfRejectedThings": 0, "numberOfFailedThings": 1, "numberOfInProgressThings": 0, "numberOfRemovedThings": 0, "processingTargets": [ arn:aws:iot:us-east-1:123456789012:thing/thingOne, arn:aws:iot:us-east-1:123456789012:thing/thingTwo, arn:aws:iot:us-east-1:123456789012:thinggroup/thingThree ] } }
任务执行最终状态更多信息 (13)
任务执行最终状态

当设备将任务执行更新为最终状态时,AWS IoT Jobs 会发布消息:

  • $aws/events/jobExecution/jobID/succeeded

  • $aws/events/jobExecution/jobID/failed

  • $aws/events/jobExecution/jobID/rejected

  • $aws/events/jobExecution/jobID/canceled

更多信息 (13)

消息包含以下示例负载:

{ "eventType": "jobExecution", "eventId": "UUID", "timestamp": "14889025672199", "operation": "succeeded|failed|rejected|canceled", "jobId": "031", "status": "SUCCESS|FAILED|REJECTED|CANCELED", "thingName": "myThing", }

设备和任务

设备与 Jobs 的通信使用 MQTT 协议MQTT 主题概述更多信息 (14)
设备与 Jobs 的通信

设备可使用 MQTT 消息与 Jobs 进行通信。每个设备必须订阅适当的主题以从 Jobs 接收消息。每个设备都有自己的 MQTT 主题。设备还可以使用 HTTPS API 与 Jobs 进行通信。此部分介绍如何使用 MQTT 消息对设备进行编程以使用 Jobs。HTTPS API 命令类似,将在 使用 AWS IoT Jobs API 中介绍。

使用 MQTT 协议

Jobs 服务和设备之间的通信可通过 MQTT 协议进行。设备订阅 MQTT 主题以便获得新任务通知并接收来自 Jobs 服务的响应。设备在 MQTT 主题上发布以查询或更新任务执行的状态。

MQTT 主题概述

有关发布和订阅 MQTT 主题的更多信息,请参阅AWS IoT 的消息代理

设备可以:

  • 在某个设备的待处理任务执行列表中添加或删除任务执行时收到通知,方式是通过订阅 $aws/things/thing-name/jobs/notify MQTT 主题,其中 thing-name 是与设备关联的事物的名称。

  • 在下一个待处理任务执行发生更改时收到通知,方式是通过订阅 $aws/things/thing-name/jobs/notify-next MQTT 主题,其中 thing-name 是与设备关联的事物的名称。

  • 通过调用 UpdateJobExecution API 来更新任务执行的状态。

  • 通过调用 DescribeJobExecution API 来查询任务执行的状态。

  • 通过调用 GetPendingJobExecutions API 来检索待处理任务执行的列表。

  • 通过使用 jobId $next 调用 DescribeJobExecution API 来检索下一个待处理任务执行。

  • 通过调用 StartNextPendingJobExecution API 来获取和开始下一个待处理任务执行。

Jobs 服务通过将 acceptedrejected 追加到用于发出请求的主题,在 MQTT 主题上发布成功和失败消息。例如,如果在 $aws/things/myThing/jobs/get 主题上发布请求消息,则 Jobs 服务将在 $aws/things/myThing/jobs/get/accepted 主题上发布成功消息,并在 $aws/things/myThing/jobs/get/rejected 主题上发布已拒绝消息。

更多信息 (14)

在此部分中,名为 MyThing 的设备应订阅以下 MQTT 主题:

  • $aws/things/MyThing/jobs/notify (或者 $aws/things/MyThing/jobs/notify-next)

  • $aws/things/MyThing/jobs/get/accepted

  • $aws/things/MyThing/jobs/get/rejected

  • $aws/things/MyThing/jobs/jobId/get/accepted

  • $aws/things/MyThing/jobs/jobId/get/rejected

对设备进行编程以使用 Jobs

设备工作流程

通常,设备可通过两种方式处理要执行的任务。

选项 A:获取下一个任务选项 B:从可用任务中选取
选项 A:获取下一个任务
  1. 当设备首次联机时,它应订阅设备的 notify-next 主题。

  2. 使用 jobId $next 调用 DescribeJobExecution MQTT API 以获取下一个任务、其任务文档和其他详细信息,包括保存在 statusDetails 中的任何状态。

  3. 调用 UpdateJobExecution MQTT API 以更新任务状态。或者,要在一个调用中将此步骤与上一步骤合并,设备可调用 StartNextPendingJobExecution

  4. 使用 UpdateJobExecution MQTT API 执行任务文档所指定的操作以报告任务的进度。

  5. 再次调用 UpdateJobExecution MQTT API 以更新任务状态并报告成功或失败。

  6. 由于此任务的执行状态已更改为最终状态,因此,可用于执行的下一个任务 (如果有) 将发生更改。设备将收到下一个待处理任务执行已更改的通知。此时,设备将按照步骤 2 中所述继续操作。

如果设备保持联机状态,则它在完成任务或添加新的待处理任务执行时,将继续收到下一个待处理任务执行的通知,包括其 JobExecutionData。在发生此情况时,设备将按照步骤 2 中所述继续操作。

选项 B:从可用任务中选取
  1. 当设备首次联机时,它应订阅事物的 notify 主题。

  2. 调用 GetPendingJobExecutions MQTT API 以获取待处理任务执行的列表。

  3. 如果列表包含一个或多个任务执行,请选取一个任务执行。

  4. 调用 DescribeJobExecution MQTT API 以获取任务文档和其他详细信息,包括保存在 statusDetails 中的任何状态。

  5. 调用 UpdateJobExecution MQTT API 以更新任务状态。如果在此命令中将 includeJobDocument 字段设置为 true,则设备可跳过上一个步骤并在此时检索任务文档。

  6. 使用 UpdateJobExecution MQTT API 执行任务文档所指定的操作以报告任务的进度。

  7. 再次调用 UpdateJobExecution MQTT API 以更新任务状态并报告成功或失败。

如果设备保持联机状态,则在一个新的待处理任务执行变为可用时,它将收到所有待处理任务执行的通知。在发生此情况时,设备可按照步骤 2 中所述继续操作。

如果设备无法执行任务,它将调用 UpdateJobExecution MQTT API 来将任务状态更新为 REJECTED

开始新任务

新任务通知更多信息 (15)
新任务通知

在创建新任务时,Jobs 将在 $aws/things/thing-name/jobs/notify 主题上为每个目标设备发布一条消息。

更多信息 (15)

消息包含以下信息:

{ "timestamp":1476214217017, "jobs":{ "QUEUED":[{ "jobId":"0001", "queuedAt":1476214216981, "lastUpdatedAt":1476214216981, "versionNumber" : 1 }] } }

在对任务执行进行排队时,设备将在“$aws/things/thingName/jobs/notify”主题中收到此消息。

获取任务信息更多信息 (16)
获取任务信息

要获取有关任务执行的更多信息,请调用 DescribeJobExecution MQTT API 并将 includeJobDocument 字段设置为 true。

更多信息 (16)

如果请求成功,Jobs 将在 $aws/things/MyThing/jobs/0023/get/accepted 主题上发布消息:

{ "clientToken" : "client-001", "timestamp" : 1489097434407, "execution" : { "jobId" : "023", "status" : "QUEUED", "queuedAt" : 1489097374841, "lastUpdatedAt" : 1489097374841, "versionNumber" : 1, "jobDocument" : { < contents of job document > } } }

注意

如果请求失败,Jobs 将在 $aws/things/MyThing/jobs/0023/get/rejected 主题上发布消息。

设备现在已有任务文档,它可解释该文档以执行任务的远程操作。如果任务文档包含一个 Amazon S3 预签名 URL,则设备可使用该 URL 下载任务的任何所需文件。

设备可调用 StartNextPendingJobExecution MQTT API 来通过一个步骤请求更多信息并开始任何待处理任务执行。

报告任务执行状态

更新执行状态更多信息 (17)
更新执行状态

当设备执行任务时,它可调用 UpdateJobExecution MQTT API 来更新任务执行的状态。

更多信息 (17)

例如,设备可通过在 $aws/things/MyThing/jobs/0023/update 主题上发布以下消息来将任务执行状态更新为 IN_PROGRESS

{ "status":"IN_PROGRESS", "statusDetails": { "progress":"50%" }, "expectedVersion":"1", "clientToken":"client001" }

Jobs 通过将消息发布到 $aws/things/MyThing/jobs/0023/update/accepted$aws/things/MyThing/jobs/0023/update/rejected 主题来做出响应:

{ "clientToken":"client001", "timestamp":1476289222841 }

设备可通过调用 StartNextPendingJobExecution 来合并前两个以前的请求,这将获取并开始下一个待处理任务执行,并允许设备更新任务执行状态。此请求还在有待处理任务执行时返回任务文档。

status 字段可设置为 QUEUEDIN_PROGRESSSUCCESSFAILEDREJECTEDREMOVEDCANCELED。您无法更新已处于最终状态的任务执行的状态。

报告执行已完成更多信息 (18)
报告执行已完成

在设备执行完任务后,它将调用 UpdateJobExecution MQTT API。如果任务已成功,则将 status 设置为 SUCCESS,并在消息负载的 statusDetails 中,将有关任务的其他信息作为名称/值对添加。

更多信息 (18)

例如:

{ "status":"SUCCESS", "statusDetails": { "progress":"100%" }, "expectedVersion":"2", "clientToken":"client-001" }

如果任务未成功,则将 status 设置为 FAILED,并在 statusDetails 中,添加有关出现的错误的信息:

{ "status":"FAILED", "statusDetails": { "errorCode":"101", "errorMsg":"Unable to install update" }, "expectedVersion":"2", "clientToken":"client-001" }

注意

statusDetails 属性可包含任意数量的名称/值对。

在 Jobs 检索此更新时,它会在 $aws/things/MyThing/jobs/notify 主题上发布消息以指示任务执行已完成:

{ "timestamp":1476290692776, "jobs":{} }

其他任务

其他任务更多信息 (19)
其他任务

如果设备有其他待处理的任务执行,这些任务执行将包含在发布到 $aws/things/MyThing/jobs/notify 的消息中。

更多信息 (19)

例如:

{ "timestamp":1476290692776, "jobs":{ "QUEUED":[{ "jobId":"0002", "queuedAt":1476290646230, "lastUpdatedAt":1476290646230 }], "IN_PROCESS":[{ "jobId":"0003", "queuedAt":1476290646230, "lastUpdatedAt":1476290646230 }] } }