本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
取得部署和元件運作狀態通知
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 當部署進入下列狀態時發出事件:FAILED、SUCCEEDEDCOMPLETED、、 REJECTED和 CANCELED。您可以建立 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=)" } }
您可以建立規則和事件,以更新部署狀態。當部署完成 FAILED、SUCCEEDED、REJECTED、 或 時COMPLETED,會啟動事件CANCELED。如果核心裝置上的部署失敗,您將收到詳細的回應,說明部署失敗的原因。如需部署錯誤代碼的詳細資訊,請參閱 詳細部署錯誤代碼。
- 部署狀態
-
-
FAILED。 部署失敗。 -
SUCCEEDED。 針對物件群組的部署已成功完成。 -
COMPLETED。 目標為物件的部署已成功完成。 -
REJECTED。 部署遭拒。如需詳細資訊,請參閱statusDetails欄位。 -
CANCELED。 使用者已取消部署。
-
事件可能會重複或不按順序。若要判斷事件的順序,請使用 time 屬性。
如需 errorStacks和 中錯誤代碼的完整清單errorTypes,請參閱 詳細部署錯誤代碼和 詳細的元件狀態碼。
元件狀態變更事件
對於 2.12.2 版和更早 AWS IoT Greengrass 版本,Greengrass 會在元件進入下列狀態時發出事件: ERRORED和 BROKEN。對於 Greengrass 核版本 2.12.3 和更新版本,Greengrass 會在元件進入下列狀態時發出事件:ERRORED、RUNNING、 BROKEN和 FINISHED。當部署完成時,Greengrass 也會發出事件。您可以建立 EventBridge 規則,針對所有狀態轉換或轉換至您指定的狀態執行該規則。當已安裝的元件進入啟動規則的狀態時,EventBridge 會叫用規則中定義的目標動作。這可讓您傳送通知、擷取事件資訊、採取修正動作,或啟動其他事件來回應狀態變更。
元件狀態變更的事件使用以下格式:
您可以建立規則和事件,以更新已安裝元件的狀態。當元件變更裝置上的狀態時,會啟動事件。您將會收到詳細的回應,說明元件發生錯誤或損壞的原因。您也會收到狀態碼,指出失敗的原因。如需元件狀態碼的詳細資訊,請參閱 詳細的元件狀態碼。
建立 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
-
在導覽窗格中,選擇規則。
-
選擇建立規則。
-
輸入規則的名稱和描述。
在同一個區域和同一個事件匯流排上,規則不能與另一個規則同名。
-
針對事件匯流排,選擇要與此規則建立關聯的事件匯流排。如果您想要此規則匹配來自您的帳戶的事件,請選取 AWS 預設事件匯流排。當您帳戶中 AWS 的服務發出事件時,一律會前往您帳戶的預設事件匯流排。
-
針對規則類型,選擇具有事件模式的規則。
-
選擇下一步。
-
在事件來源,選擇 AWS 事件。
-
針對事件模式,選擇 AWS 服務。
-
針對AWS 服務,選擇 Greengrass。
-
針對事件類型,從下列選項中選擇:
-
針對部署事件,選擇 Greengrass V2 有效部署狀態變更。
-
針對元件事件,選擇 Greengrass V2 已安裝元件狀態變更。
-
-
選擇下一步。
-
在目標類型欄位中,選擇 AWS 服務。
-
針對選取目標,設定您的目標。此範例使用 Amazon SNS 主題,但您可以設定其他目標類型來傳送通知。
-
在 Target (目標),選擇 SNS topic (SNS 主題)。
-
在 Topic (主題),選擇您的目標主題。
-
選擇下一步。
-
-
選擇下一步。
-
檢閱規則的詳細資訊,然後選擇建立規則。
設定裝置運作狀態通知 (CLI)
使用下列步驟建立 EventBridge 規則,在發生 Greengrass 狀態變更事件時發佈 Amazon SNS 主題。藉由這個規則,Web 伺服器、電子郵件地址和其他主題訂閱者將能回應事件。
-
建立 規則。
-
對於部署狀態變更事件。
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\"]}"
模式省略的屬性會遭到忽略。
-
-
新增主題作為規則目標。
-
將
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 中的事件和事件模式。
設定裝置運作狀態通知 (CloudFormation)
使用 CloudFormation 範本建立 EventBridge 規則,傳送 Greengrass 群組部署狀態變更的通知。如需詳細資訊,請參閱《 AWS CloudFormation 使用者指南》中的 Amazon EventBridge 資源類型參考。