本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
获取部署和组件运行状况通知
亚马逊 EventBridge 事件规则向您提供有关您的设备收到的 Greengrass 部署以及设备上已安装组件的状态变更的通知。 EventBridge 提供描述Amazon资源变化的近乎实时的系统事件流。 Amazon IoT Greengrass尽最大努力将 EventBridge 这些事件发送到。这意味着,Amazon IoT Greengrass尝试将所有事件发送到, EventBridge 但在极少数情况下,事件可能无法传送。此外,Amazon IoT Greengrass可能会发送给定事件的多个副本,这意味着您的事件侦听器可能不会按照事件发生的顺序接收事件。
注意
Amazon EventBridge 是一项事件总线服务,您可以使用它来连接应用程序与来自各种来源的数据,例如 Greengrass 核心设备以及部署和组件通知。有关更多信息,请参阅什么是亚马逊 EventBridge? 在《亚马逊 EventBridge 用户指南》中。
主题
部署状态更改事件
Amazon IoT Greengrass当部署进入以下状态时会发出一个事件:FAILED
、SUCCEEDED
和。COMPLETED
您可以创建一条 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", "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=)" } }
您可以创建规则和事件,以更新您的部署状态。当部署以、、OR 的形式完成时 FAILED
SUCCEEDED
,就会启动事件COMPLETED
。如果在核心设备上部署失败,您将收到详细的响应,说明部署失败的原因。有关部署错误代码的更多信息,请参阅详细的部署错误代码。
- 部署状态
-
-
FAILED
. 部署失败。 -
SUCCEEDED
。 以事物组为目标的部署成功完成。 -
COMPLETED
。 针对某件事的部署成功完成。
-
可能是事件重复或者顺序颠倒。要确定事件的顺序,请使用 time
属性。
有关errorStacks
和中错误代码的完整列表errorTypes
,请参阅详细的部署错误代码和详细的组件状态码。
组件状态更改事件
Amazon IoT Greengrass当组件进入以下状态时会发出一个事件:ERRORED
和。BROKEN
部署完成后,Greengrass 还会发出一个事件。您可以创建一条 EventBridge 规则,该规则适用于所有状态转换或向指定状态的过渡。当已安装的组件进入启动规则的状态时,将 EventBridge 调用规则中定义的目标操作。这样,您就可以发送通知、捕获事件信息、采取纠正措施或启动其他事件以响应状态更改。
组件状态更改的事件使用以下格式:
{ "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 规则之前Amazon IoT Greengrass,请执行以下操作:
-
熟悉中的事件、规则和目标。 EventBridge
-
创建和配置您的 EventBridge 规则调用的目标。规则可以调用许多类型的目标,包括:
-
Amazon Simple Notification Service (Amazon SNS)
-
Amazon Lambda 函数
-
Amazon Kinesis Video Streams
-
Amazon Simple Queue Service(Amazon SQS)队列
-
有关更多信息,请参阅什么是亚马逊 EventBridge? 以及《亚马逊 EventBridge 用户指南》 EventBridge中的 “亚马逊入门”。
配置设备运行状况通知(控制台)
使用以下步骤创建 EventBridge 规则,以便在群组的部署状态发生变化时发布 Amazon SNS 主题。这样,Web 服务器、电子邮件地址和其他主题订阅者就可以响应事件。有关更多信息,请参阅 Amazon EventBridge 用户指南中的创建针对来自Amazon资源的事件触发的 EventBridge 规则。
-
在导航窗格中,选择规则。
-
选择创建规则。
-
为规则输入名称和描述。
规则不能与同一区域中的另一个规则和同一事件总线上的名称相同。
-
对于事件总线,请选择要与此规则关联的事件总线。如果您希望此规则对来自您自己的账户的匹配事件触发,请选择 Amazon默认事件总线。当您账户中的某个 Amazon 服务发出一个事件时,它始终会发送到您账户的默认事件总线。
-
对于规则类型,选择具有事件模式的规则。
-
选择下一步。
-
对于事件源,选择 Amazon 事件。
-
在事件模式中,选择 Amazon服务。
-
对于 Amazon 服务,选择 Greengrass。
-
对于事件类型,请从以下选项中进行选择:
-
对于部署事件,请选择 Greengrass V2 有效部署状态更改。
-
对于组件事件,请选择 Greengrass V2 已安装组件状态更改。
-
-
选择 Next(下一步)。
-
对于目标类型,选择Amazon 服务。
-
在 选择目标 下,配置您的目标。此示例使用了 Amazon SNS 主题,而您可以配置其他目标类型来发送通知。
-
对于 Target (目标),选择 SNS topic (SNS 主题)。
-
对于 Topic (主题),请选择您的目标主题。
-
请选择 Next(下一步)。
-
-
请选择 Next(下一步)。
-
查看规则详细信息并选择创建规则。
配置设备运行状况通知 (CLI)
使用以下步骤创建在发生 Greengrass 状态更改事件时发布 Amazon SNS 主题的 EventBridge 规则。这样,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 调用您的目标主题,您必须在主题中添加基于资源的策略。有关更多信息,请参阅《亚马逊 EventBridge 用户指南》中的 Ama zon SNS 权限。
-
有关更多信息,请参阅 Amazon EventBridge 用户指南 EventBridge中的事件和事件模式。
配置设备运行状况通知 (Amazon CloudFormation)
使用Amazon CloudFormation模板创建 EventBridge 规则,发送有关 Greengrass 群组部署状态变更的通知。有关更多信息,请参阅Amazon CloudFormation用户指南中的 Amazon EventBridge 资源类型参考。
另请参阅
-
什么是亚马逊 EventBridge? 在 Amazon EventBridge 用户指南中