與組件生命週期互動 - AWS IoT Greengrass

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

與組件生命週期互動

使用元件生命週期 IPC 服務來:

  • 更新核心裝置上的元件狀態。

  • 訂閱元件狀態更新。

  • 防止核心在部署期間停止元件以套用更新。

  • 暫停並繼續元件程序。

最低 SDK 版本

下表列出與元件生命週期互動AWS IoT Device SDK所必須使用的最低版本。

授權

若要從自訂元件暫停或恢復其他元件,您必須定義授權原則,以允許您的元件管理其他元件。如需有關定義授權原則的資訊,請參閱授權元件執行IPC作業

元件生命週期管理的授權原則具有下列屬性。

IPC 服務識別碼:aws.greengrass.ipc.lifecycle

操作 描述 資源

aws.greengrass#PauseComponent

允許元件暫停您指定的元件。

元件名稱,或*允許存取所有元件。

aws.greengrass#ResumeComponent

允許元件恢復您指定的元件。

元件名稱,或*允許存取所有元件。

*

允許元件暫停和恢復您指定的元件。

元件名稱,或*允許存取所有元件。

授權政策範例

您可以參考下列授權原則範例,協助您設定元件的授權原則。

範例 授權政策範例

下列範例授權原則可讓元件暫停和繼續所有元件。

{ "accessControl": { "aws.greengrass.ipc.lifecycle": { "com.example.MyLocalLifecycleComponent:lifecycle:1": { "policyDescription": "Allows access to pause/resume all components.", "operations": [ "aws.greengrass#PauseComponent", "aws.greengrass#ResumeComponent" ], "resources": [ "*" ] } } } }

UpdateState

更新核心裝置上元件的狀態。

請求

此操作的請求具有以下參數:

state

要設定的狀態。此枚舉具有以下值:LifecycleState

  • RUNNING

  • ERRORED

回應

此操作在其響應中不提供任何信息。

SubscribeToComponentUpdates

訂閱以在 AWS IoT Greengrass Core 軟體更新元件之前接收通知。通知會指定核心是否會在更新過程中重新啟動。

僅當部署的元件更新原則指定通知元件時,核心才會傳送更新通知。預設行為是通知元件。如需詳細資訊,請參閱建立部署和呼叫CreateDeployment作業時可提供的DeploymentComponentUpdatePolicy物件。

重要

本機部署不會在更新之前通知元件。

此作業是訂閱作業,您可以在其中訂閱事件訊息串流。若要使用此作業,請定義具有處理事件訊息、錯誤和資料流結束之函數的串流回應處理常式。如需詳細資訊,請參閱 訂閱IPC事件串流

事件訊息類型:ComponentUpdatePolicyEvents

提示

您可以按照自學課程學習如何開發有條件地延遲元件更新的元件。如需詳細資訊,請參閱 教學課程:開發延遲元件更新的 Greengrass 元件

請求

此操作的請求沒有任何參數。

回應

此作業的回應包含下列資訊:

messages

通知訊息的資料流。此物件ComponentUpdatePolicyEvents包含下列資訊:

preUpdateEvent(Python:pre_update_event)

(選擇性) 指出核心想要更新元件的事件。您可以回應DeferComponentUpdate作業以確認或延遲更新,直到元件準備好重新啟動為止。此物件PreComponentUpdateEvent包含下列資訊:

deploymentId(Python:deployment_id)

更新元件的AWS IoT Greengrass部署識別碼。

isGgcRestarting(Python:is_ggc_restarting)

核心是否需要重新啟動才能套用更新。

postUpdateEvent(Python:post_update_event)

(選擇性) 表示原子核已更新元件的事件。此物件PostComponentUpdateEvent包含下列資訊:

deploymentId(Python:deployment_id)

更新元件的AWS IoT Greengrass部署識別碼。

注意

此功能需要 v2.7.0 或更高版 Greengrass 核成分。

DeferComponentUpdate

確認或延遲您發現的SubscribeToComponentUpdates元件更新。您可以指定在核心再次檢查元件是否準備好讓元件進行更新之前等待的時間長度。您也可以使用此作業告知核心您的元件已準備好進行更新。

如果元件未回應元件更新通知,則核心會等待您在部署的元件更新原則中指定的時間量。在該逾時之後,核心會繼續進行部署。預設元件更新逾時為 60 秒。如需詳細資訊,請參閱建立部署和呼叫CreateDeployment作業時可提供的DeploymentComponentUpdatePolicy物件。

提示

您可以按照自學課程學習如何開發有條件地延遲元件更新的元件。如需詳細資訊,請參閱 教學課程:開發延遲元件更新的 Greengrass 元件

請求

此操作的請求具有以下參數:

deploymentId(Python:deployment_id)

要延遲的部AWS IoT Greengrass署識別碼。

message

(選擇性) 要延期更新的元件名稱。

默認為發出請求的組件的名稱。

recheckAfterMs(Python:recheck_after_ms)

延遲更新的時間 (以毫秒為單位)。細胞核等待這段時間,然後發送另一個PreComponentUpdateEvent您可以發現的時間。SubscribeToComponentUpdates

指定0以確認更新。這會告訴核心您的元件已準備好進行更新。

默認為零毫秒,這意味著要確認更新。

回應

此操作在其響應中不提供任何信息。

PauseComponent

此功能適用於 v2.4.0 和更高版 Greeng rass 核組件。 AWS IoT Greengrass目前在 Windows 核心裝置上不支援此功能。

在核心裝置上暫停元件的處理序。若要恢復元件,請使用此ResumeComponent作業。

您只能暫停類屬元件。如果您嘗試暫停任何其他類型的元件,此作業會擲回InvalidRequestError.

注意

此作業無法暫停容器化處理序,例如 Docker 容器。若要暫停和繼續 docker 容器,您可以使用 docker 暫停和泊塢視窗取消暫停

此作業不會暫停依賴於您暫停之元件的元件相依性或元件。當您暫停屬於另一個元件相依性的元件時,請考慮這個行為,因為相依元件在暫停其相依性時可能會遇到問題。

當您重新啟動或關閉暫停的元件 (例如透過部署) 時,Greengrass 核心會恢復元件並執行其關閉生命週期。如需重新啟動元件的詳細資訊,請參閱RestartComponent

重要

若要使用此作業,您必須定義授與使用此作業之權限的授權原則。如需詳細資訊,請參閱 授權

最低 SDK 版本

下表列出暫停和恢復元件所AWS IoT Device SDK必須使用的最低版本。

請求

此操作的請求具有以下參數:

componentName(Python:component_name)

要暫停的元件名稱,必須是類屬元件。如需詳細資訊,請參閱 元件類型

回應

此操作在其響應中不提供任何信息。

ResumeComponent

此功能適用於 v2.4.0 和更高版 Greeng rass 核組件。 AWS IoT Greengrass目前在 Windows 核心裝置上不支援此功能。

在核心裝置上繼續執行元件的程序。若要暫停元件,請使用此PauseComponent作業。

您只能繼續暫停的元件。如果您嘗試繼續未暫停的元件,此作業會擲InvalidRequestError回.

重要

若要使用此作業,您必須定義授與權限的授權原則。如需詳細資訊,請參閱 授權

最低 SDK 版本

下表列出暫停和恢復元件所AWS IoT Device SDK必須使用的最低版本。

請求

此操作的請求具有以下參數:

componentName(Python:component_name)

要恢復的元件名稱。

回應

此操作在其響應中不提供任何信息。