获取部署和组件运行状况通知 - Amazon IoT Greengrass
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

获取部署和组件运行状况通知

亚马逊 EventBridge 事件规则为您提供有关设备收到的 Greengrass 部署和设备上已安装组件的状态更改的通知。 EventBridge 提供近乎实时的系统事件流,这些系统事件介绍了系统事件流Amazon资源。Amazon IoT Greengrass将这些事件发送到 EventBridge 在 a尽力而为基础。这意味着Amazon IoT Greengrass尝试将所有事件发送到 EventBridge 但是,在极少数情况下,可能无法交付活动。此外,Amazon IoT Greengrass可能会发送给定事件的多个副本,这意味着事件侦听器可能无法按事件的发生顺序接收事件。

注意

亚马逊 EventBridge 是一种事件总线服务,让您可以轻松地将应用程序与来自各种源的数据相连接,例如Greengrass 核心设备以及部署和组件通知。有关更多信息,请参阅什么是 Amazon EventBridge?亚马逊 EventBridge 用户指南.

部署状态更改事件

Amazon IoT Greengrass当部署进入以下状态时会发出事件:FAILED,SUCCEEDEDCOMPLETED. 您可执行以下操作 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":{ "deployment-id": "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=)" } }

您可以创建规则和事件,以更新部署状态。当部署完成时,将启动一个事件FAILED,SUCCEEDED,或COMPLETED. 如果在核心设备上部署失败,您将收到详细的回复,说明部署失败的原因。有关部署错误代码的更多信息,请参阅详细的部署错误代码.

部署状态
  • FAILED. 部署失败。

  • SUCCEEDED. 针对事物组的部署成功完成。

  • COMPLETED. 针对某件事的部署成功完成。

可能是事件重复或者顺序颠倒。要确定事件的顺序,请使用 time 属性。

有关错误代码的完整列表errorStackserrorTypes,你可以访问 [新的错误代码和错误类型网站链接将转到这里]。

组件状态更改事件

Amazon IoT Greengrass当组件进入以下状态时触发事件:ERROREDBROKEN. 您可执行以下操作 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) 队列

有关更多信息,请参阅什么是 Amazon EventBridge?开始使用 Amazon EventBridge亚马逊 EventBridge 用户指南.

配置设备运行状况通知(控制台)

请按照以下步骤创建 EventBridge 该规则在群组的部署状态发生变化时发布 Amazon SNS 主题。这样,Web 服务器、电子邮件地址和其他主题订阅者就可以响应事件。有关更多信息,请参阅创建 EventBridge 对来自某事件触发的规则Amazon资源亚马逊 EventBridge 用户指南.

  1. 打开亚马逊 EventBridge控制台.

  2. 在导航窗格中,选择 Rules (规则)

  3. 选择 Create rule (创建规则)

  4. 为规则输入名称和描述。

    规则不能与同一区域中的另一个规则和同一事件总线上的名称相同。

  5. 对于 Event bus(事件总线),请选择要与此规则关联的事件总线。如果您希望此规则对来自您自己的账户的匹配事件触发,选择Amazon默认事件总线. 当您账户中的某个 Amazon 服务发出一个事件时,它始终会发送到您账户的默认事件总线。

  6. 对于 Rule type(规则类型),选择 Rule with an event pattern(具有事件模式的规则)。

  7. 选择 Next(下一步)。

  8. 对于事件来源,选择Amazon事件.

  9. 对于事件模式,选择Amazon服务.

  10. 对于Amazon服务,选择 Greengrass。

  11. 对于Event type,请从以下选项中进行选择:

    • 对于部署事件,选择Greengrass V2 有效部署状态更改.

    • 对于组件事件,选择Greengrass V2 已安装组件状态更改.

  12. 选择 Next(下一步)。

  13. 对于 Target types(目标类型),选择 Amazon service(服务)。

  14. 对于选择目标,配置目标。此示例使用 Amazon SNS 主题,但您可以配置其他目标类型来发送通知。

    1. 对于 Target (目标),选择 SNS topic (SNS 主题)

    2. 对于 Topic (主题),请选择您的目标主题。

    3. 选择 Next(下一步)。

  15. 选择 Next(下一步)。

  16. 查看规则详细信息并选择 Create rule(创建规则)。

配置设备运行状况通知 (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. 将主题添加为规则目标。

    • Replace(替换)topic-arn以及您的 Amazon SNS 主题的 ARN。

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

    允许亚马逊 EventBridge 要调用目标主题,您必须将基于资源的策略添加到您的主题中。有关更多信息,请参阅Amazon SNS 权限亚马逊 EventBridge 用户指南.

有关更多信息,请参阅中的事件和事件模式 EventBridge亚马逊 EventBridge 用户指南.

配置设备运行状况通知 (Amazon CloudFormation)

使用Amazon CloudFormation要创建的模板 EventBridge 发送有关 Greengrass 群组部署状态变更通知的规则。有关更多信息,请参阅亚马逊 EventBridge 资源类型参考Amazon CloudFormation用户指南.

另请参阅