本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
建立子部署
注意
子部署功能可在 Greengrass nucleus 2.9.0 版及更新版本上使用。無法將組態部署到具有舊版 Greengrass 核元件的子部署。
子部署是針對父部署中較小裝置子集的部署。您可以使用子部署將組態部署到較小的裝置子集。您也可以建立子部署,在該父部署中的一或多個裝置失敗時重試失敗的父部署。使用此功能,您可以選取在該父部署中失敗的裝置,並建立子部署以測試組態,直到子部署成功為止。子部署成功後,您可以將該組態重新部署到父部署。
遵循本節中的步驟來建立子部署並檢查其狀態。如需如何建立部署的詳細資訊,請參閱建立部署。
建立子部署 (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,以鎖定子部署的目標。子部署目標只能是物件群組。物件群組 ARNs的格式如下:-
物件群組 –
arn:aws:iot:
region
:account-id
:thinggroup/thingGroupName
{ "targetArn": "
targetArn
" } -
-
再次執行下列命令,以取得原始部署的詳細資訊。這些詳細資訊包括中繼資料、元件和任務組態。將
deploymentId
取代為來自 的 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
您在上一個步驟中使用的 。targetArn
將 JSON 檔案中的 取代為父系部署的 ARN,並執行下列命令來使用此新組態建立父系部署。注意
如果您建立新的父機群部署修訂版,它會取代該父部署的所有部署修訂版和子部署。如需詳細資訊,請參閱修訂部署。
aws greengrassv2 create-deployment
--cli-input-json
file://deployment.json回應包含可識別此部署
deploymentId
的 。您可以使用部署 ID 來檢查部署的狀態。如需詳細資訊,請參閱檢查部署狀態。