建立子部署 - AWS IoT Greengrass

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

建立子部署

注意

子部署功能可在 Greengrass nucleus 2.9.0 版及更新版本上使用。無法將組態部署到具有舊版 Greengrass 核元件的子部署。

子部署是針對父部署中較小裝置子集的部署。您可以使用子部署將組態部署到較小的裝置子集。您也可以建立子部署,在該父部署中的一或多個裝置失敗時重試失敗的父部署。使用此功能,您可以選取在該父部署中失敗的裝置,並建立子部署以測試組態,直到子部署成功為止。子部署成功後,您可以將該組態重新部署到父部署。

遵循本節中的步驟來建立子部署並檢查其狀態。如需如何建立部署的詳細資訊,請參閱建立部署

建立子部署 (AWS CLI)
  1. 執行下列命令來擷取物件群組的最新部署。將命令中的 ARN 取代為要查詢之物件群組的 ARN。--history-filter 設定為 LATEST_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. 執行下列命令,以擷取指定任務的任務執行清單。將 jobID 取代為上一個步驟iotJobId的 。將狀態取代為您要篩選的狀態。您可以篩選具有下列狀態的結果:

    • QUEUED

    • IN_PROGRESS

    • SUCCEEDED

    • FAILED

    • TIMED_OUT

    • REJECTED

    • REMOVED

    • CANCELED

    aws iot list-job-executions-for-job --job-id jobID --status status
  6. 為您的子部署建立新的 AWS IoT 物件群組,或使用現有的物件群組。然後,將 AWS IoT 物件新增至此物件群組。您可以使用物件群組來管理 Greengrass 核心裝置的機群。當您將軟體元件部署到裝置時,您可以鎖定個別裝置或裝置群組。您可以將裝置新增至具有作用中 Greengrass 部署的物件群組。新增後,您就可以將該物件群組的軟體元件部署到該裝置。

    若要建立新的物件群組並將您的裝置新增至其中,請執行下列動作:

    1. 建立 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" }
    2. 將佈建的 Greengrass 核心新增至您的物件群組。使用這些參數執行下列命令:

      • MyGreengrassCore 取代為您佈建的 Greengrass 核心的名稱。

      • MyGreengrassCoreGroup 取代為您的物件群組名稱。

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

      如果請求成功,命令不會有任何輸出。

  7. 建立名為 的檔案deployment.json,然後將下列 JSON 物件複製到 檔案。將 targetArn 取代為 AWS IoT 物件群組的 ARN,以鎖定子部署的目標。子部署目標只能是物件群組。物件群組 ARNs的格式如下:

    • 物件群組arn:aws:iot:region:account-id:thinggroup/thingGroupName

    { "targetArn": "targetArn" }
  8. 再次執行下列命令,以取得原始部署的詳細資訊。這些詳細資訊包括中繼資料、元件和任務組態。將 deploymentId 取代為來自 的 ID步驟 1。您可以使用此部署組態來設定子部署,並視需要進行變更。

    aws greengrassv2 get-deployment --deployment-id deploymentId

    回應包含部署的詳細資訊。將下列任一鍵值對從get-deployment命令的回應複製到 deployment.json。您可以變更子部署的這些值。如需此命令詳細資訊的詳細資訊,請參閱 GetDeployment

    • components – 部署的元件。若要解除安裝元件,請從此物件中移除它。

    • deploymentName – 部署的名稱。

    • deploymentPolicies – 部署的政策。

    • iotJobConfiguration – 部署的任務組態。

    • parentTargetArn – 父系部署的目標。

    • tags – 部署的標籤。

  9. 執行下列命令,從 建立子部署deployment.json。將 subdeploymentName 取代為子部署的名稱。

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

    回應包含可識別此子部署deploymentId的 。您可以使用部署 ID 來檢查部署的狀態。如需詳細資訊,請參閱檢查部署狀態

  10. 如果子部署成功,您可以使用其組態來修改父部署。複製deployment.json您在上一個步驟中使用的 。targetArn 將 JSON 檔案中的 取代為父系部署的 ARN,並執行下列命令來使用此新組態建立父系部署。

    注意

    如果您建立新的父機群部署修訂版,它會取代該父部署的所有部署修訂版和子部署。如需詳細資訊,請參閱修訂部署

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

    回應包含可識別此部署deploymentId的 。您可以使用部署 ID 來檢查部署的狀態。如需詳細資訊,請參閱檢查部署狀態