選取您的 Cookie 偏好設定

我們使用提供自身網站和服務所需的基本 Cookie 和類似工具。我們使用效能 Cookie 收集匿名統計資料,以便了解客戶如何使用我們的網站並進行改進。基本 Cookie 無法停用,但可以按一下「自訂」或「拒絕」以拒絕效能 Cookie。

如果您同意,AWS 與經核准的第三方也會使用 Cookie 提供實用的網站功能、記住您的偏好設定,並顯示相關內容,包括相關廣告。若要接受或拒絕所有非必要 Cookie,請按一下「接受」或「拒絕」。若要進行更詳細的選擇,請按一下「自訂」。

取得部署和元件運作狀態通知

焦點模式
取得部署和元件運作狀態通知 - AWS IoT Greengrass

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

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

Amazon EventBridge 事件規則可針對裝置收到的 Greengrass 部署和裝置上已安裝的元件,提供狀態變更的通知。EventBridge 提供近乎即時的系統事件串流,描述 AWS 資源的變更。 會盡最大努力將這些事件 AWS IoT Greengrass 傳送至 EventBridge。這表示 AWS IoT Greengrass 會嘗試將所有事件傳送至 EventBridge,但在某些情況下,可能不會傳送事件。此外, AWS IoT Greengrass 可能會傳送特定事件的多個副本,這表示您的事件接聽程式可能不會按照事件發生的順序接收事件。

注意

Amazon EventBridge 是一種事件匯流排服務,可用來將應用程式與各種來源的資料連線,例如 Greengrass 核心裝置、部署和元件通知。如需詳細資訊,請參閱《Amazon EventBridge 使用者指南》中的什麼是 Amazon EventBridge?

部署狀態變更事件

AWS IoT Greengrass 當部署進入下列狀態時發出事件:FAILEDSUCCEEDEDCOMPLETED、、 REJECTEDCANCELED。您可以建立 EventBridge 規則,該規則會針對所有狀態轉換或轉換至您指定的狀態執行。當部署進入啟動規則的狀態時,EventBridge 會叫用規則中定義的目標動作。這可讓您傳送通知、擷取事件資訊、採取修正動作,或啟動其他事件來回應狀態變更。例如,您可以為下列使用案例建立規則:

  • 啟動部署後操作,例如下載資產和通知人員。

  • 部署成功或失敗後傳送通知。

  • 發佈關於部署事件的自訂指標。

部署狀態變更的事件會使用下列格式:

{ "version":"0", "id":" cd4d811e-ab12-322b-8255-EXAMPLEb1bc8", "detail-type":"Greengrass V2 Effective Deployment Status Change", "source":"aws.greengrass", "account":"123456789012", "region":"us-west-2", "time":"2018-03-22T00:38:11Z", "resources":["arn:aws:greengrass:us-east-1:123456789012:coreDevices:MyGreengrassCore"], "detail":{ "deploymentId": "4f38f1a7-3dd0-42a1-af48-EXAMPLE09681", "coreDeviceExecutionStatus": "FAILED|SUCCEEDED|COMPLETED|REJECTED|CANCELED", "statusDetails": { "errorStack": ["DEPLOYMENT_FAILURE", "ARTIFACT_DOWNLOAD_ERROR", "S3_ERROR", "S3_ACCESS_DENIED", "S3_HEAD_OBJECT_ACCESS_DENIED"], "errorTypes": ["DEPENDENCY_ERROR", "PERMISSION_ERROR"], }, "reason": "S3_HEAD_OBJECT_ACCESS_DENIED: FAILED_NO_STATE_CHANGE: Failed to download artifact name: 's3://pentest27/nucleus/281/aws.greengrass.nucleus.zip' for component aws.greengrass.Nucleus-2.8.1, reason: S3 HeadObject returns 403 Access Denied. Ensure the IAM role associated with the core device has a policy granting s3:GetObject. null (Service: S3, Status Code: 403, Request ID: HR94ZNT2161DAR58, Extended Request ID: wTX4DDI+qigQt3uzwl9rlnQiYlBgwvPm/KJFWeFAn9t1mnGXTms/luLCYANgq08RIH+x2H+hEKc=)" } }

您可以建立規則和事件,以更新部署狀態。當部署完成時,事件會啟動為 FAILEDSUCCEEDEDREJECTEDCOMPLETEDCANCELED。如果核心裝置上的部署失敗,您將收到詳細的回應,說明部署失敗的原因。如需部署錯誤代碼的詳細資訊,請參閱 詳細部署錯誤碼

部署狀態
  • FAILED。 部署失敗。

  • SUCCEEDED。 針對物件群組的部署已成功完成。

  • COMPLETED。 針對物件的部署已成功完成。

  • REJECTED。 部署遭拒。如需詳細資訊,請參閱 statusDetails 欄位。

  • CANCELED。 使用者已取消部署。

事件可能會重複或不按順序。若要判斷事件的順序,請使用 time 屬性。

如需 errorStacks和 中錯誤代碼的完整清單errorTypes,請參閱 詳細部署錯誤碼詳細的元件狀態碼

元件狀態變更事件

對於 2.12.2 版及更早 AWS IoT Greengrass 版本,Greengrass 會在元件進入下列狀態時發出事件: ERROREDBROKEN。對於 Greengrass 核版本 2.12.3 和更新版本,Greengrass 會在元件進入下列狀態時發出事件:ERROREDRUNNINGBROKENFINISHED。當部署完成時,Greengrass 也會發出事件。您可以建立 EventBridge 規則,該規則會針對所有狀態轉換或轉換至您指定的狀態執行。當已安裝元件進入啟動規則的狀態時,EventBridge 會叫用規則中定義的目標動作。這可讓您傳送通知、擷取事件資訊、採取修正動作,或啟動其他事件來回應狀態變更。

元件狀態變更的事件使用以下格式:

Greengrass nucleus v2.12.2 and earlier

元件狀態: ERROREDBROKEN

{ "version":"0", "id":" cd4d811e-ab12-322b-8255-EXAMPLEb1bc8", "detail-type":"Greengrass V2 Installed Component Status Change", "source":"aws.greengrass", "account":"123456789012", "region":"us-west-2", "time":"2018-03-22T00:38:11Z", "resources":["arn:aws:greengrass:us-east-1:123456789012:coreDevices:MyGreengrassCore"], "detail": { "components": [ { "componentName": "MyComponent", "componentVersion": "1.0.0", "root": true, "lifecycleState": "ERRORED|BROKEN", "lifecycleStatusCodes": ["STARTUP_ERROR"], "lifecycleStateDetails": "An error occurred during startup. The startup script exited with code 1." } ] } }
Greengrass nucleus v2.12.3 and later

元件狀態: ERROREDBROKEN

{ "version":"0", "id":" cd4d811e-ab12-322b-8255-EXAMPLEb1bc8", "detail-type":"Greengrass V2 Installed Component Status Change", "source":"aws.greengrass", "account":"123456789012", "region":"us-west-2", "time":"2018-03-22T00:38:11Z", "resources":["arn:aws:greengrass:us-east-1:123456789012:coreDevices:MyGreengrassCore"], "detail": { "components": [ { "componentName": "MyComponent", "componentVersion": "1.0.0", "root": true, "lifecycleState": "ERRORED|BROKEN", "lifecycleStatusCodes": ["STARTUP_ERROR"], "lifecycleStateDetails": "An error occurred during startup. The startup script exited with code 1." } ] } }

元件狀態: RUNNINGFINISHED

{ "version":"0", "id":" cd4d811e-ab12-322b-8255-EXAMPLEb1bc8", "detail-type":"Greengrass V2 Installed Component Status Change", "source":"aws.greengrass", "account":"123456789012", "region":"us-west-2", "time":"2018-03-22T00:38:11Z", "resources":["arn:aws:greengrass:us-east-1:123456789012:coreDevices:MyGreengrassCore"], "detail": { "components": [ { "componentName": "MyComponent", "componentVersion": "1.0.0", "root": true, "lifecycleState": "RUNNING|FINISHED", "lifecycleStateDetails": null } ] } }

元件狀態: ERROREDBROKEN

{ "version":"0", "id":" cd4d811e-ab12-322b-8255-EXAMPLEb1bc8", "detail-type":"Greengrass V2 Installed Component Status Change", "source":"aws.greengrass", "account":"123456789012", "region":"us-west-2", "time":"2018-03-22T00:38:11Z", "resources":["arn:aws:greengrass:us-east-1:123456789012:coreDevices:MyGreengrassCore"], "detail": { "components": [ { "componentName": "MyComponent", "componentVersion": "1.0.0", "root": true, "lifecycleState": "ERRORED|BROKEN", "lifecycleStatusCodes": ["STARTUP_ERROR"], "lifecycleStateDetails": "An error occurred during startup. The startup script exited with code 1." } ] } }

您可以建立規則和事件,以更新已安裝元件的狀態。當元件變更裝置上的狀態時,即會啟動事件。您將會收到詳細的回應,說明元件發生錯誤或損壞的原因。您也會收到狀態碼,指出失敗的原因。如需元件狀態碼的詳細資訊,請參閱 詳細的元件狀態碼

建立 EventBridge 規則的先決條件

為 建立 EventBridge 規則之前 AWS IoT Greengrass,請執行下列動作:

  • 熟悉 Eventbridge 中的事件、規則和目標。

  • 建立和設定將由您的 Eventbridge 規則叫用的目標。規則可以叫用許多類型的目標,包括:

    • Amazon Simple Notification Service (Amazon SNS)

    • AWS Lambda 函數

    • Amazon Kinesis Video Streams

    • Amazon Simple Queue Service (Amazon SQS) 佇列

如需詳細資訊,請參閱《Amazon EventBridge 使用者指南》中的什麼是 Amazon EventBridge?Amazon EventBridge 入門

設定裝置運作狀態通知 (主控台)

使用下列步驟建立 EventBridge 規則,在群組的部署狀態變更時發佈 Amazon SNS 主題。藉由這個規則,Web 伺服器、電子郵件地址和其他主題訂閱者將能回應事件。如需詳細資訊,請參閱《Amazon EventBridge 使用者指南》中的從 AWS 資源建立事件觸發的 EventBridge 規則。 EventBridge

  1. 開啟 Amazon EventBridge 主控台

  2. 在導覽窗格中,選擇規則

  3. 選擇建立規則

  4. 輸入規則的名稱和描述。

    在同一個區域和同一個事件匯流排上,規則不能與另一個規則同名。

  5. 針對事件匯流排,選擇要與此規則建立關聯的事件匯流排。如果您想要此規則匹配來自您的帳戶的事件,請選取 AWS 預設事件匯流排。當您帳戶中 AWS 的服務發出事件時,一律會傳送至您帳戶的預設事件匯流排。

  6. 針對規則類型,選擇具有事件模式的規則

  7. 選擇下一步

  8. 事件來源,選擇 AWS 事件

  9. 針對事件模式,選擇 AWS 服務

  10. 針對AWS 服務,選擇 Greengrass。

  11. 針對事件類型,從下列中選擇:

    • 針對部署事件,選擇 Greengrass V2 有效部署狀態變更

    • 針對元件事件,選擇 Greengrass V2 已安裝元件狀態變更

  12. 選擇 Next (下一步)

  13. 目標類型欄位中,選擇 AWS 服務

  14. 針對選取目標,設定您的目標。此範例使用 Amazon SNS 主題,但您可以設定其他目標類型來傳送通知。

    1. Target (目標),選擇 SNS topic (SNS 主題)

    2. Topic (主題),選擇您的目標主題。

    3. 選擇 Next (下一步)

  15. 選擇下一步

  16. 檢閱規則的詳細資訊,然後選擇建立規則

設定裝置運作狀態通知 (CLI)

使用下列步驟建立 EventBridge 規則,在發生 Greengrass 狀態變更事件時發佈 Amazon SNS 主題。藉由這個規則,Web 伺服器、電子郵件地址和其他主題訂閱者將能回應事件。

  1. 建立 規則。

    • 針對部署狀態變更事件。

      aws events put-rule \ --name TestRule \ --event-pattern "{\"source\": [\"aws.greengrass\"], \"detail-type\": [\"Greengrass V2 Effective Deployment Status Change\"]}"
    • 用於元件狀態變更事件。

      aws events put-rule \ --name TestRule \ --event-pattern "{\"source\": [\"aws.greengrass\"], \"detail-type\": [\"Greengrass V2 Installed Component Status Change\"]}"

    模式省略的屬性會遭到忽略。

  2. 新增主題作為規則目標。

    • topic-arn 取代為 Amazon SNS 主題的 ARN。

    aws events put-targets \ --rule TestRule \ --targets "Id"="1","Arn"="topic-arn"
    注意

    若要讓 Amazon EventBridge 呼叫您的目標主題,您必須將以資源為基礎的政策新增到您的主題。如需詳細資訊,請參閱《Amazon EventBridge 使用者指南》中的 Amazon SNS 許可

如需詳細資訊,請參閱《Amazon EventBridge 使用者指南》中的 EventBridge 中的事件和事件模式

設定裝置運作狀態通知 (AWS CloudFormation)

使用 AWS CloudFormation 範本建立 EventBridge 規則,以傳送 Greengrass 群組部署狀態變更的通知。如需詳細資訊,請參閱AWS CloudFormation 《 使用者指南》中的 Amazon EventBridge 資源類型參考

另請參閱

隱私權網站條款Cookie 偏好設定
© 2025, Amazon Web Services, Inc.或其附屬公司。保留所有權利。