本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
创建子部署
注意
子部署功能在 Greengrass nucleus 版本 2.9.0 及更高版本上可用。无法使用早期组件版本的 Greengrass nucleus 将配置部署到子部署。
子部署是一种针对父部署中较小一部分设备的部署。您可以使用子部署将配置部署到较小的设备子集。您还可以创建子部署,以便在父部署中的一台或多台设备失败时重试失败的父部署。使用此功能,您可以选择在该父部署中失败的设备并创建子部署来测试配置,直到子部署成功。子部署成功后,您可以将该配置重新部署到父部署。
按照本节中的步骤创建子部署并检查其状态。有关如何创建部署的更多信息,请参阅创建部署。
创建子部署 () AWS CLI
-
运行以下命令以检索事物组的最新部署。将命令中的 ARN 替换为要查询的事物组的 ARN。设置
--history-filter
LATEST_ONLY
为可查看该事物组的最新部署。aws greengrassv2 list-deployments
--target-arn
arn:aws:iot:region
:account-id
:thinggroup/thingGroupName
--history-filter
LATEST_ONLY
-
将响应
deploymentId
中的命令复制到list-deployments命令中,以便在下一步中使用。 -
运行以下命令以检索部署的状态。
替换为要查询的部署的 ID。deploymentId
aws greengrassv2 get-deployment
--deployment-id
deploymentId
-
将响应
iotJobId
中的命令复制到get-deployment命令中,以便在接下来的步骤中使用。 -
运行以下命令以检索指定作业的任务执行列表。将
jobId
替换为iotJobId
上一步中的。将状态
替换为您要筛选的状态。您可以筛选具有以下状态的结果:-
QUEUED
-
IN_PROGRESS
-
SUCCEEDED
-
FAILED
-
TIMED_OUT
-
REJECTED
-
REMOVED
-
CANCELED
aws iot list-job-executions-for-job
--job-id
jobID
--status
status
-
-
为子部署创建新AWS IoT事物组或使用现有事物组。然后,向该AWS IoT事物组中添加一个事物。您可以使用事物组来管理 Greengrass 核心设备群。将软件组件部署到设备时,可以将单个设备或设备组作为目标。您可以通过激活 Greengrass 部署将设备添加到事物组。添加后,您可以将该事物组的软件组件部署到该设备上。
要创建新事物组并将您的设备添加到该群组,请执行以下操作:
-
创建AWS IoT事物组。
MyGreengrassCoreGroup
替换为新事物组的名称。不能在事物组名称中使用冒号 (:)。注意
如果将子部署的事物组与一个事物组一起使用
parentTargetArn
,则无法在其他父队列中重复使用该事物组。如果事物组已被用于为另一个队列创建子部署,则 API 将返回错误。aws iot create-thing-group
--thing-group-name
MyGreengrassCoreGroup
如果请求成功,则响应类似于以下示例:
{ "thingGroupName": "MyGreengrassCoreGroup", "thingGroupArn": "arn:aws:iot:us-west-2:123456789012:thinggroup/
MyGreengrassCoreGroup
", "thingGroupId": "4df721e1-ff9f-4f97-92dd-02db4e3f03aa" } -
将已配置的 Greengrass 核心添加到您的事物组中。使用这些参数运行以下命令:
-
MyGreengrassCore
替换为已配置的 Greengrass 核心的名称。 -
MyGreengrassCoreGroup
替换为事物组的名称。
aws iot add-thing-to-thing-group
--thing-name
MyGreengrassCore
--thing-group-name
MyGreengrassCoreGroup
如果请求成功,则该命令没有任何输出。
-
-
-
创建一个名为的文件
deployment.json
,然后将以下 JSON 对象复制到该文件中。将targetArn
替换为子部署目标的事物组AWS IoT的 ARN。子部署目标只能是事物组。事物组 ARN 的格式如下:-
事物组 —
arn:aws:iot:
region
:account-id
:thinggroup/thingGroupName
{ "targetArn": "
targetArn
" } -
-
再次运行以下命令以获取原始部署的详细信息。这些详细信息包括元数据、组件和作业配置。将 de
plomentId
替换为来自的 ID。步骤 1您可以使用此部署配置来配置您的子部署,并根据需要进行更改。aws greengrassv2 get-deployment
--deployment-id
deploymentId
响应包含部署的详细信息。将get-deployment命令响应中的以下任意键值对复制到。
deployment.json
您可以更改子部署的这些值。有关此命令的详细信息的更多信息,请参阅GetDeployment。-
components
— 部署的组件。要卸载组件,请将其从该对象中移除。 -
deploymentName
— 部署的名称。 -
deploymentPolicies
— 部署的策略。 -
iotJobConfiguration
— 部署的任务配置。 -
parentTargetArn
— 父部署的目标。 -
tags
— 部署的标签。
-
-
运行以下命令从
deployment.json
中创建子部署。将subdeploymentName 替换为子部署
的名称。aws greengrassv2 create-deployment
--deployment-name
subdeploymentName
--cli-input-json
file://deployment.json响应中包含标识
deploymentId
此子部署的。您可以使用部署 ID 来检查部署的状态。有关更多信息,请参阅检查部署状态。 -
如果子部署成功,则可以使用其配置来修改父部署。复制您在
deployment.json
上一步中使用的。将 JSON 文件targetArn
中的替换为父部署的 ARN,然后运行以下命令使用此新配置创建父部署。注意
如果您创建父队列的新部署修订版,它将替换该父队列的所有部署修订版和子部署。有关更多信息,请参阅修改部署。
aws greengrassv2 create-deployment
--cli-input-json
file://deployment.json响应中
deploymentId
包含用于标识此部署的。您可以使用部署 ID 来检查部署的状态。有关更多信息,请参阅 检查部署状态。