创建子部署 - Amazon IoT Greengrass
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

创建子部署

注意

子部署功能在 Greengrass nucleus 版本 2.9.0 及更高版本上可用。无法将配置部署到使用早期组件版本的 Greengrass nucleus 的子部署。

子部署是针对父部署中较小一部分设备的部署。您可以使用子部署将配置部署到较小的设备子集。您也可以创建子部署,以便在父部署中的一个或多个设备失败时重试失败的父部署。使用此功能,您可以选择在该父部署中失败的设备并创建子部署来测试配置,直到子部署成功为止。子部署成功后,您可以将该配置重新部署到父部署。

按照本部分中的步骤创建子部署并检查其状态。有关如何创建部署的更多信息,请参阅创建部署

创建子部署 (Amazon CLI)
  1. 运行以下命令以检索事物组的最新部署。将命令中的 ARN 替换为要查询的事物组的 ARN。设置--history-filterLATEST_ONLY为查看该事物组的最新部署。

    aws greengrassv2 list-deployments --target-arn arn:aws:iot:region:account-id:thinggroup/thingGroupName --history-filter LATEST_ONLY
  2. 将响应deploymentId中的内容复制到list-deployments命令以在下一步中使用。

  3. 运行以下命令以检索部署的状态。deploymentId替换为要查询的部署的 ID。

    aws greengrassv2 get-deployment --deployment-id deploymentId
  4. 将响应iotJobId中的内容复制到get-deployment命令中,以便在后续步骤中使用。

  5. 运行以下命令以检索指定作业的作业执行的列表。用上一步iotJobId中的替换 joB id。将状态替换为要筛选的状态。您可以筛选具有以下状态的结果:

    • QUEUED

    • IN_PROGRESS

    • SUCCEEDED

    • FAILED

    • TIMED_OUT

    • REJECTED

    • REMOVED

    • CANCELED

    aws iot list-job-executions-for-job --job-id jobID --status status
  6. 为子部署创建新Amazon IoT事物组或使用现有事物组。然后,向这个Amazon IoT事物组添加一个事物。您可以使用事物组来管理 Greengrass 核心设备队列。将软件组件部署到设备时,可以将单个设备或设备组作为目标。您可以使用有效的 Greengrass 部署将设备添加到事物组。添加后,您可以将该事物组的软件组件部署到该设备上。

    要创建新的事物组并将您的设备添加到其中,请执行以下操作:

    1. 创建Amazon 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" }
    2. 向你的事物组添加预置的 Greengrass 核心。使用以下参数运行以下命令:

      • MyGreengrassCore替换为你预置的 Greengrass 核心的名称。

      • MyGreengrassCoreGroup替换为事物组的名称。

      aws iot add-thing-to-thing-group --thing-name MyGreengrassCore --thing-group-name MyGreengrassCoreGroup

      如果请求成功,该命令没有任何输出。

  7. 创建名为的文件deployment.json,然后将以下 JSON 对象复制到该文件中。将 targetArn 替换为子部署的目标Amazon IoT事物组的 ARN。子部署目标只能是事物组。事物组 ARN 具有以下格式:

    • 事物组arn:aws:iot:region:account-id:thinggroup/thingGroupName

    { "targetArn": "targetArn" }
  8. 再次运行以下命令以获取原始部署的详细信息。这些详细信息包括元数据、组件和作业配置。将 dd eploymentId 替换为中的 ID步骤 1。您可以使用此部署配置配置您的子部署并根据需要进行更改。

    aws greengrassv2 get-deployment --deployment-id deploymentId

    响应包含部署的详细信息。将以下任何键值对从get-deployment命令的响应复制到deployment.json。您可以更改子部署的这些值。有关此命令的详细信息的更多信息,请参阅GetDeployment

    • components— 部署的组件。要卸载组件,请将其从该对象中删除。

    • deploymentName— 部署的名称。

    • deploymentPolicies— 部署策略。

    • iotJobConfiguration— 部署的作业配置。

    • parentTargetArn— 父级部署的目标。

    • tags— 部署的标签。

  9. 运行以下命令以从中创建子部署deployment.json。将 subdeployment Name 替换为子部署的名称。

    aws greengrassv2 create-deployment --deployment-name subdeploymentName --cli-input-json file://deployment.json

    响应包括标识deploymentId此子部署的。您可以使用部署 ID 来检查部署的状态。有关更多信息,请参阅检查部署状态

  10. 如果子部署成功,则可以使用其配置来修改父部署。复制您在deployment.json上一步中使用的内容。将 JSON 文件targetArn中的替换为父部署的 ARN,然后运行以下命令以使用此新配置创建父部署。

    注意

    如果您创建父舰队的新部署修订版,它将替换该父级部署的所有部署修订版和子部署。有关更多信息,请参阅修改部署

    aws greengrassv2 create-deployment --cli-input-json file://deployment.json

    响应包括用于识别deploymentId此部署的。您可以使用部署 ID 来检查部署的状态。有关更多信息,请参阅 检查部署状态