建立子部署 - AWS IoT Greengrass

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

建立子部署

注意

子部署功能在版本 2.9.0 及更新版本中提供。您無法將組態部署至具有較早版本 Greengrass 核心元件的子部署。

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

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

若要建立子部署 (AWS CLI)
  1. 執行以下命令來擷取實物群組的最新部署。將命令中的 ARN 取代為要查詢的物群組的 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. 執行以下命令以下命令來擷取部署狀態。以要查詢的部署 ID 取deploymentId代。

    aws greengrassv2 get-deployment --deployment-id deploymentId
  4. 將回應複製到要在下一步中使用的get-deployment指令。iotJobId

  5. 執行以下命令來擷取指定工作的工作執行清單。將以上一個步驟iotJobId中的步驟取代 Jobid。將狀態替換為您要過濾的狀態。您可以下列狀態篩選結果:

    • 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 對象複製到該文件中。以要針對子部署作為目標之AWS IoT物件群組的 ARN 取代 Tar n。子部署目標只能是物群組。物群組 ARN 採用以下格式格式:

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

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

    aws greengrassv2 get-deployment --deployment-id deploymentId

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

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

    • deploymentName— 部署的名稱。

    • deploymentPolicies— 部署的原則。

    • iotJobConfiguration— 部署的工作組態。

    • parentTargetArn— 父系部署的目標。

    • tags— 部署的標籤。

  9. 執行以下命令以下命令以下命令來建立子部署deployment.json。將子部署名稱取代為子部署的名稱。

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

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

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

    注意

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

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

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