AWS IoT Greengrass
开发人员指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

获取部署通知

Amazon EventBridge 提供近乎实时的系统事件流以描述 AWS 资源的变化。利用 EventBridge 事件规则,您可以获取关于 Greengrass 组部署状态更改的通知。

组部署状态改变时 AWS IoT Greengrass 会触发一个事件。您可以创建一个 EventBridge 规则,用于在发生所有状态转换或转换为您指定的状态时运行。当部署进入将触发规则的状态时,EventBridge 会调用规则中定义的目标操作。这样,您就可以发送通知、捕获事件信息、采取纠正措施或启动其他事件以响应状态更改。例如,您可以为以下使用案例创建规则:

  • 触发部署后操作,例如下载资产和通知人员。

  • 部署成功或失败时发送通知。

  • 发布关于部署事件的自定义指标。

部署进入以下状态时 AWS IoT Greengrass 会触发一个事件:BuildingInProgressSuccessFailure

注意

目前不支持对批量部署操作状态的监控。但是,AWS IoT Greengrass 会为构成批量部署的各个组部署触发状态更改事件。

组部署状态更改事件

部署状态更改的事件采用以下格式:

{ "version":"0", "id":" cd4d811e-ab12-322b-8255-EXAMPLEb1bc8", "detail-type":"Greengrass Deployment Status Change", "source":"aws.greengrass", "account":"123456789012", "time":"2018-03-22T00:38:11Z", "region":"us-west-2", "resources":[], "detail":{ "group-id": "284dcd4e-24bc-4c8c-a770-EXAMPLEf03b8", "deployment-id": "4f38f1a7-3dd0-42a1-af48-EXAMPLE09681", "deployment-type": "NewDeployment|Redeployment|ResetDeployment|ForceResetDeployment", "status": "Building|InProgress|Success|Failure" } }

您可以创建适用于一个或多个组的规则。您可以按以下一种或多种部署类型和部署状态筛选规则:

部署类型
  • NewDeployment。组版本的第一次部署。

  • ReDeployment。组版本的重新部署。

  • ResetDeployment。删除存储在云和 AWS IoT Greengrass Core 中的部署信息。有关更多信息,请参阅重置部署

  • ForceResetDeployment。删除存储在云中的部署信息并报告成功,而无需等待核心进行响应。如果核心已连接或当下次连接时,会同时删除存储在核心中的部署信息。

部署状态
  • Building。AWS IoT Greengrass 云服务正在验证组配置并构建部署项目。

  • InProgress。正在 AWS IoT Greengrass Core 上进行部署。

  • Success。部署成功。

  • Failure。部署失败。

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

注意

AWS IoT Greengrass 不使用 resources 属性,因此该属性始终为空。

创建 EventBridge 规则的先决条件

在为 AWS IoT Greengrass 创建 EventBridge 规则之前,您应执行以下操作:

  • 熟悉 EventBridge 中的事件、规则和目标。

  • 创建和配置由 EventBridge 规则调用的目标。规则可以调用许多类型的目标,包括:

    • Amazon SNS 主题

    • AWS Lambda 函数

    • Kinesis 流

    • Amazon SQS 队列

有关更多信息,请参阅Amazon EventBridge User Guide 中的什么是 Amazon EventBridge?以及 Amazon EventBridge 入门

配置部署通知

使用以下步骤创建一个 EventBridge 规则,此规则会在一个组的部署状态更改时发布一个 Amazon SNS 主题。这样,Web 服务器、电子邮件地址和其他主题订阅者就可以响应事件。

  1. 创建规则。

    • 用您的 AWS IoT Greengrass 组 的 ID 替换 group-id

    aws events put-rule \ --name TestRule \ --event-pattern "{\"source\": [\"aws.greengrass\"], \"detail\": {\"group-id\": [\"group-id\"]}}"
  2. 将主题添加为规则目标。

    • 用您的 Amazon SNS 主题的 ARN 替换 topic-arn

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

    注意

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

有关更多信息,请参阅 Amazon EventBridge User GuideEventBridge 中的事件和事件模式