管理任务 - Amazon IoT Core
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

管理任务

使用任务通知设备软件或固件更新。您可以使用 Amazon IoT 控制台任务管理和控制 API 操作Amazon Command Line InterfaceAmazon SDK 来创建和管理任务。

任务的代码签名

向设备发送代码时,为了让设备检测代码是否在传输过程中被修改,建议您使用 Amazon CLI 对代码文件进行签名。有关说明,请参阅使用 Amazon CLI 创建和管理任务。

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

任务文档

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

提示

有关任务文档示例,请参阅 Amazon IoT SDK for JavaScript 中的 jobs-agent.js 示例。

预签名 URL

您的任务文档可以包含指向您的代码文件(或其它文件)的预签名 Amazon S3 URL。预签名 Amazon S3 URL 的有效期有限,因此在设备请求任务文档时才生成。因为在您创建任务文档时尚未创建预签名 URL,所以在您的任务文档中使用占位符 URL。占位符 URL 类似如下所示:

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

其中:

  • 存储桶是包含代码文件的 Amazon S3 存储桶。

  • 代码文件是代码文件的 Amazon S3 密钥。

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

IAM 角色,用于授予从 S3 下载文件的权限

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

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

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

  1. 转到 IAM 控制台的角色中心,然后选择您的角色。

  2. 信任关系选项卡上,选择 Edit Trust Relationship (编辑信任关系),用以下 JSON 替换当前策略文档。选择 Update Trust Policy

    { "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": [ "iot.amazonaws.com" ] }, "Action": "sts:AssumeRole" } ] }
  3. 为防止出现混淆代理人问题,请在策略中添加全局条件键 aws:SourceArnaws:SourceAccount

    重要

    您的 aws:SourceArn 必须符合此格式:arn:aws:iot:region:account-id:*。确保区域与您的 Amazon IoT 区域匹配,account-id与您的客户账户 ID 相匹配。有关更多信息,请参阅防止跨服务混淆代理

    { "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. 如果您的任务使用的任务文档是一个 Amazon S3 对象,请选择 Permissions(权限),然后使用以下 JSON 添加策略,授予从您的 Amazon S3 存储桶下载文件的权限:

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