使用 Amazon 托管式模板部署一般远程操作 - Amazon IoT Core
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

使用 Amazon 托管式模板部署一般远程操作

Amazon 托管模板是由 Amazon 提供的任务模板用于频繁执行的远程操作,例如重启、下载文件或在设备上安装应用程序。这些模板具有用于每个远程操作的预定义任务文档,因此您无需创建自己的任务文档。

您可以从一组预定义的配置中进行选择,并使用这些模板创建任务,而无需编写任何其他代码 使用托管模板,您可以查看部署到机群的任务文档。您可以使用这些模板创建任务,然后进一步创建可以重复用于远程操作的自定义任务模板。

托管模板包含哪些内容?

每个 Amazon 托管模板包含:

  • 指定操作名称及其参数的任务文档。例如,如果您使用下载文件模板,操作名称是下载文件,参数可以是:

    • 要下载到设备的文件的 URL,可以是互联网资源,也可以是公共或预签名 S3 URL。

    • 设备上用于存储下载文件的本地文件路径。

    有任务文档及其参数的更多信息,请参阅 托管模板远程操作和任务文档

  • 在任务文档中运行命令的环境。

先决条件

要使设备运行托管模板任务文档指定的远程操作,您必须:

  • 在设备上安装特定软件

    • 使用 Amazon IoT Device Client

      我们建议您安装并运行设备上的 Amazon IoT Device Client 是因为默认情况下它支持直接从控制台使用所有托管模板。

      Device Client 是用 C++ 编写的开源软件,您可以在基于 Linux 的嵌入式 IoT 设备上编译和安装。Device Client 有基本客户端和离散的客户端功能。基本客户端通过 MQTT 协议建立连接 Amazon IoT,可以连接不同的客户端功能。

      要在设备上执行远程操作,请使用 Device Client 的客户端任务功能。此功能包含一个用于接收任务文档的解析器以及实现任务文档中指定的远程操作的任务处理程序。有关Device Client 及其功能的更多信息,请参阅 Amazon IoT Device Client。

      在设备上运行时,Device Client 会收到任务文档,并具有用于在文档中运行命令的特定于平台的实现。有关设置 Device Client 和使用任务功能的详细信息,请参阅 Amazon IoT 教程

    • 使用自己的设备软件和任务处理程序

      您也可以使用 Amazon IoT 设备软件开发包及其支持远程操作的处理程序库为设备编写自己的代码。要部署和运行任务,请确保设备代理库已正确安装并在这些设备上运行。

      您也可以选择使用自己的处理程序,支持远程操作。有关如何创建这些处理程序的信息,请参阅Amazon IoT Device Client GitHub 库中的示例任务处理程序

  • 使用支持的环境

    对于每个托管模板,您将找到有关可用于运行远程操作的环境信息。我们建议您将模板与模板中指定的受支持的 Linux 环境结合使用。您可以使用 Amazon IoT Device Client. 运行管理模板远程操作,因为它支持常见的微处理器和 Linux 环境,例如 Debian 和 Ubuntu。

托管模板远程操作和任务文档

以下部分列出了 Amazon IoT Jobs 的不同 Amazon 托管式模板,并描述了可在设备上执行的远程操作。在下面的部分中,您将找到有关任务文档的信息以及每个远程操作的任务文档参数的描述。设备端软件使用模板名称和参数来执行远程操作。

Amazon 托管式模板接受输入参数,您可以在使用模板创建任务时为这些参数指定值。所有托管式模板都有以下两个共同的可选输入参数:runAsUserpathToHandler。除了 AWS-Reboot 模板时,模板需要额外的输入参数,在使用模板创建任务时必须为这些参数指定值。这些所需的输入参数因您所选的模板而异。例如,如果您选择 AWS-Download-File 模板,则必须指定要安装的软件包列表以及从中下载文件的 URL。

使用 Amazon IoT 控制台或 Amazon CLI 创建使用托管式模板的任务时,可以为输入参数指定一个值。使用 CLI 时,您可以使用 document-parameters 对象提供这些值。有关更多信息,请参阅文档参数

注意

仅当从 Amazon 托管式模板创建任务时,才能使用 document-parameters。此参数不能与自定义任务模板一起使用,也不能从中创建作业。

下面显示了常见可选输入参数的说明。您将在下面的部分中看到每个托管式模板所需的其他输入参数的说明。

runAsUser

此参数指定是否以其他用户身份运行任务处理程序。如果在任务创建过程中未指定,任务处理程序将以与 Device Client 相同的用户身份运行。当您以其他用户身份运行任务处理程序时,请指定不超过 256 个字符的字符串值。

pathToHandler

设备上运行的任务处理程序的路径。如果在创建任务时未指定,Device Client 将使用当前工作目录。

下面显示了不同的远程操作、任务文档以及接受的参数。所有这些模板都支持在设备上运行远程操作的 Linux 环境。

模板名称

Amazon–Reboot

模板描述

Amazon 提供的托管模板用于重新启动设备。

输入参数

此模板没有必需参数。但是,您可以指定可选参数 runAsUserpathToHandler

设备的行为

设备已成功重新启动。

任务文档

下面显示了任务文档及其最新版本。模板显示了任务处理程序和 shell 脚本的路径,reboot.sh,必须运行任务处理程序才能重新启动设备。

{ "version": "1.0", "steps": [ { "action": { "name": "Reboot", "type": "runHandler", "input": { "handler": "reboot.sh", "path": "${aws:iot:parameter:pathToHandler}" }, "runAsUser": "${aws:iot:parameter:runAsUser}" } } ] }

模板名称

Amazon–Download–File

模板描述

Amazon 提供的托管模板用于下载文件。

输入参数

此模板具有以下必需参数。您还可以指定可选参数 runAsUserpathToHandler

downloadUrl

要从中下载文件的 URL,可以是互联网资源、可公开访问的 Amazon S3 中的对象,也可以是 Amazon S3 中的只能由设备使用预签名 URL 访问的对象。有关使用预签名 URL 和授予权限的详细信息,请参阅 预签名 URL

filePath

本地文件路径,显示设备中存储下载文件的位置。

设备的行为

设备从指定位置下载文件,验证下载完成并将其存储在本地。

任务文档

下面显示了任务文档及其最新版本。模板显示了任务处理程序和 shell 脚本的路径,download-file.sh,必须运行任务处理程序才能下载文件。它还显示了必需参数 downloadUrlfilePath

{ "version": "1.0", "steps": [ { "action": { "name": "Download-File", "type": "runHandler", "input": { "handler": "download-file.sh", "args": [ "${aws:iot:parameter:downloadUrl}", "${aws:iot:parameter:filePath}" ], "path": "${aws:iot:parameter:pathToHandler}" }, "runAsUser": "${aws:iot:parameter:runAsUser}" } } ] }

模板名称

Amazon–Install–Application

模板描述

Amazon 提供的托管模板用于安装一个或多个应用程序。

输入参数

此模板具有以下必需参数,packages。您还可以指定可选参数 runAsUserpathToHandler

packages

要安装的一个或多个应用程序列表,以空格分隔。

设备的行为

设备将按照任务文档中的指定安装应用程序。

任务文档

下面显示了任务文档及其最新版本。模板显示了任务处理程序和 shell 脚本的路径,install-packages.sh,必须运行任务处理程序才能下载文件。它还显示必需参数 packages

{ "version": "1.0", "steps": [ { "action": { "name": "Install-Application", "type": "runHandler", "input": { "handler": "install-packages.sh", "args": [ "${aws:iot:parameter:packages}" ], "path": "${aws:iot:parameter:pathToHandler}" }, "runAsUser": "${aws:iot:parameter:runAsUser}" } } ] }

模板名称

Amazon–Remove–Application

模板描述

Amazon 提供的托管模板用于卸载一个或多个应用程序。

输入参数

此模板具有以下必需参数,packages。您还可以指定可选参数 runAsUserpathToHandler

packages

要卸载的一个或多个应用程序列表,以空格分隔。

设备的行为

设备将按照任务文档中的指定卸载应用程序。

任务文档

下面显示了任务文档及其最新版本。模板显示了任务处理程序和 shell 脚本的路径,remove-packages.sh,必须运行任务处理程序才能下载文件。它还显示必需参数 packages

{ "version": "1.0", "steps": [ { "action": { "name": "Remove-Application", "type": "runHandler", "input": { "handler": "remove-packages.sh", "args": [ "${aws:iot:parameter:packages}" ], "path": "${aws:iot:parameter:pathToHandler}" }, "runAsUser": "${aws:iot:parameter:runAsUser}" } } ] }

模板名称

Amazon-Start-Application

模板描述

Amazon提供的托管模板启动一个或多个服务。

输入参数

此模板具有以下必需参数,services。您还可以指定可选参数 runAsUserpathToHandler

services

将启动的一个或多个应用程序列表,以空格分隔。

设备的行为

指定的应用程序开始在设备上运行。

任务文档

下面显示了任务文档及其最新版本。模板显示了任务处理程序和 shell 脚本的路径,start-services.sh,必须运行任务处理程序才能启动系统服务。它还显示必需参数 services

{ "version": "1.0", "steps": [ { "action": { "name": "Start-Application", "type": "runHandler", "input": { "handler": "start-services.sh", "args": [ "${aws:iot:parameter:services}" ], "path": "${aws:iot:parameter:pathToHandler}" }, "runAsUser": "${aws:iot:parameter:runAsUser}" } } ] }

模板名称

Amazon–Stop–Application

模板描述

Amazon 提供的托管模板停止一个或多个服务。

输入参数

此模板具有以下必需参数,services。您还可以指定可选参数 runAsUserpathToHandler

services

将停止的一个或多个应用程序列表,以空格分隔。

设备的行为

指定的应用程序停止在设备上运行。

任务文档

下面显示了任务文档及其最新版本。模板显示了任务处理程序和 shell 脚本的路径,stop-services.sh,必须运行任务处理程序才能停止系统服务。它还显示必需参数 services

{ "version": "1.0", "steps": [ { "action": { "name": "Stop-Application", "type": "runHandler", "input": { "handler": "stop-services.sh", "args": [ "${aws:iot:parameter:services}" ], "path": "${aws:iot:parameter:pathToHandler}" }, "runAsUser": "${aws:iot:parameter:runAsUser}" } } ] }

模板名称

Amazon–Restart–Application

模板描述

Amazon 提供的托管模板用于停止和重新启动一个或多个服务。

输入参数

此模板具有以下必需参数,services。您还可以指定可选参数 runAsUserpathToHandler

services

将重新启动的一个或多个应用程序列表,以空格分隔。

设备的行为

指定的应用程序停止然后在设备上重新启动。

任务文档

下面显示了任务文档及其最新版本。模板显示了任务处理程序和 shell 脚本的路径,restart-services.sh,必须运行任务处理程序才能重新启动系统服务。它还显示必需参数 services

{ "version": "1.0", "steps": [ { "action": { "name": "Restart-Application", "type": "runHandler", "input": { "handler": "restart-services.sh", "args": [ "${aws:iot:parameter:services}" ], "path": "${aws:iot:parameter:pathToHandler}" }, "runAsUser": "${aws:iot:parameter:runAsUser}" } } ] }