选择您的 Cookie 首选项

我们使用必要 Cookie 和类似工具提供我们的网站和服务。我们使用性能 Cookie 收集匿名统计数据,以便我们可以了解客户如何使用我们的网站并进行改进。必要 Cookie 无法停用,但您可以单击“自定义”或“拒绝”来拒绝性能 Cookie。

如果您同意,AWS 和经批准的第三方还将使用 Cookie 提供有用的网站功能、记住您的首选项并显示相关内容,包括相关广告。要接受或拒绝所有非必要 Cookie,请单击“接受”或“拒绝”。要做出更详细的选择,请单击“自定义”。

管理任务

聚焦模式
管理任务 - AWS IoT Core

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用任务通知设备软件或固件更新。您可以使用AWS IoT 控制台Job 管理和控制API操作AWS Command Line Interface、或AWS SDKs来创建和管理作业。

任务的代码签名

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

有关更多信息,请参阅代码签名的用途 AWS IoT?

任务文档

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

提示

有关作业文档示例,请参阅中的 jobs-agent.js 示例 JavaScript。 AWS IoT SDK

预签名 URLs

您的任务文档可以包含指向您的代码文件(或其他文件)URL的预签名 Amazon S3。预签名 Amazon S3 URLs 仅在有限的时间内有效,并且是在设备请求任务文档时生成的。由于在创建工作文档时URL不会创建预签名,因此请改为在作业文档URL中使用占位符。占位符URL如下所示:

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

其中:

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

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

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

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

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

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

授予 AWS IoT Jobs 代入你的角色的权限
  1. 前往IAM控制台的角色中心并选择您的角色。

  2. 在 “信任关系” 选项卡上,选择 “编辑信任关系”,然后将策略文档替换为以下内容JSON。选择更新信任策略

    { "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:*。请确保它region与您的 AWS 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 对象,请选择权限并使用以下内容JSON。这将添加一个策略,以授予从您的 Amazon S3 桶下载文件的权限:

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

已预签名文件URL上传

如果您的设备在任务部署期间需要将文件上传到 Amazon S3 存储桶,则可以在任务文档中包含以下预签名的URL占位符:

${aws:iot:s3-presigned-url-v2-upload:https://s3.region.amazonaws.com/<bucket>/<key>}

在工作文档中的文件上传占URL位符中 ${thingName}${jobId},您最多可以使用、和中的两个${executionNumber}作为key属性中的保留关键字。创建作业执行时,将解析并替换代表 key 属性中保留关键字的本地占位符。使用包含特定于每台设备的保留关键字的本地占位符,可确保从设备上传的每个文件都特定于该设备,并且不会被从同一作业部署的另一台目标设备上传的类似文件所覆盖。有关在作业部署期间用于上传文件的预签名占位符中的本地URL占位符疑难解答的信息,请参阅。一般错误消息疑难解答

注意

Amazon S3 存储桶名称不能包含代表已上传文件的保留关键字的本地占位符。本地占位符必须位于 key 属性中。

当设备收到此预签名URL占位符时,该预签名占位符将在您的任务文档URL中转换为 Amazon S3 预签名上传。您的设备将使用该 URL 将文件上传到目标 Amazon S3 存储桶。

注意

如果上述占位符中未提供 Amazon S3 存储桶和密钥URL,则 AWS IoT Jobs 将自动为每台设备生成一个密钥,每台设备最多使用两个${thingName}${jobId}、和${executionNumber}

URL使用 Amazon S3 版本控制进行预签名

保护存储在 Amazon S3 存储桶中的文件的完整性,对于确保使用该文件将作业安全部署到您的设备实例集至关重要。使用 Amazon S3 版本控制,您可以为存储在 Amazon S3 存储桶中的文件的每个变体添加版本标识符,以便跟踪文件的每个版本。这可以让您深入了解使用 AWS IoT 任务将哪个版本的文件部署到您的设备群中。有关使用版本控制的 Amazon S3 存储桶的更多信息,请参阅在 Amazon S3 存储桶中使用版本控制

如果文件存储在 Amazon S3 中,并且任务文档包含预先签名的URL占位符,则 AWS IoT 任务将使用 Amazon S3 存储桶、存储桶密钥和存储URL在 Amazon S3 存储桶中的文件版本在任务文档中生成预签名。在作业文档中URL生成的预签名将替换作业文档中最初的预签名URL占位符。如果您更新存储在 Amazon S3 存储桶中的文件,则将创建该文件的新版本及后续 versionId,以表明所做的更新,并支持在未来的作业部署中定位到该特定文件。

请参阅以下示例,了解使用任务文档中预先签名的 Amazon S3 的查看之前和之URLsversionId中:

Amazon S3 预签名URL占位符(在部署任务之前)

//Virtual-hosted style URL ${aws:iot:s3-presigned-url-v2:https://bucket-name.s3.region-code.amazonaws.com/key-name%3FversionId%3Dversion-id} //Path-style URL ${aws:iot:s3-presigned-url-v2:https://s3.region-code.amazonaws.com/bucket-name/key-name%3FversionId%3Dversion-id}

Amazon S3 预签名URL(在任务部署期间)

//Virtual-hosted style URL ${aws:iot:s3-presigned-url-v2:https://sample-bucket-name.s3.us-west-2.amazonaws.com/sample-code-file.png%3FversionId%3Dversion1} //Path-style ${aws:iot:s3-presigned-url-v2:https://s3.us-west-2.amazonaws.com/sample-bucket-name/sample-code-file.png%3FversionId%3Dversion1}

有关 Amazon S3 虚拟托管和路径式对象的更多信息URLs,请参阅Virtual-hosted-style 请求和路径式请求

注意

如果要附加versionId到预签名的 Amazon S3URL,则它必须符合URL编码支持。 AWS SDK for Java 2.x有关更多信息,请参阅解析 Amazon S3 URIs 从版本 1 到版本 2 的更改

隐私网站条款Cookie 首选项
© 2025, Amazon Web Services, Inc. 或其附属公司。保留所有权利。