AWS IoT
开发人员指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

管理作业

您可以使用 AWS IoT 控制台、Jobs HTTPS API、AWS Command Line Interface或 AWS 开发工具包来创建和管理作业。有关更多信息,请参阅作业管理和控制 APIAWS CLI 命令参考:iotAWS 开发工具包和工具

作业的主要目的是通知设备软件或固件更新。在向设备发送代码时,最佳实践是对代码文件进行签名。这使设备能够检测代码在传输中是否被修改。编写以下部分中的说明时假设您要对向设备发送的软件更新进行代码签名。

有关代码签名的更多信息,请参阅 AWS IoT 的代码签名是什么?

在创建作业之前,您必须创建作业文档。如果您使用 AWS IoT 的代码签名,则必须将作业文档上传到受版本控制的 Amazon S3 存储桶。有关创建 Amazon S3 存储桶并将文件上传到其中的更多信息,请参阅 Amazon S3 入门指南 中的 Amazon Simple Storage Service 入门

您的作业文档可以包含指向您的代码文件(或其他文件)的预签名 Amazon S3 URL。预签名 Amazon S3 URL 的有效期有限,因此在设备请求作业文档时才生成。因为在您创建作业文档时尚未创建预签名 URL,所以在您的作业文档中放置占位符 URL。占位符 URL 如下所示:${aws:iot:s3-presigned-url:https://s3.region.amazonaws.com/<bucket>/<code file>},其中 bucket 是包含代码文件的 Amazon S3 存储桶,code file 是代码文件的 Amazon S3 密钥。

当设备请求作业文档时,AWS IoT 会生成预签名 URL 并使用预签名 URL 替换占位符 URL。然后将您的作业文档发送到设备。

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

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

向 Jobs 授予代入您的角色的权限

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

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

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

  4. 选择 Trust Relationships 选项卡,然后选择 Edit Trust Relationship

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

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

  7. 如果您的作业使用的作业文档是一个 Amazon S3 对象,请选择权限,然后使用以下 JSON 添加策略,授予从您的 Amazon S3 存储桶下载文件的权限:

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