
# 系统订阅
#### 操作场景
IEF提供系统订阅，您可以订阅IEF资源的变更事件，当资源创建、更新、删除时，IEF会发送消息到您指定的APIG端点，以便您及时感知资源的变化。
系统订阅是边云消息的一种特定实现，IEF发送特定资源的事件消息到指定Topic，并调用APIG的API，用户可通过API调用感知资源的变化。
#### 支持订阅的事件
当前支持订阅如下事件。
 表1支持订阅的事件 
| 系统事件 | Topic                           | 资源类型             | 操作      |
|:---|:---|:---|:---|
| 实例创建 | $hw/events/instance/+/created   | 应用实例（instance）   | created |
| 实例更新 | $hw/events/instance/+/updated   | 应用实例（instance）   | updated |
| 实例删除 | $hw/events/instance/+/deleted   | 应用实例（instance）   | deleted |
| 应用删除 | $hw/events/deployment/+/deleted | 容器应用（deployment） | deleted |
| 应用创建 | $hw/events/deployment/+/created | 容器应用（deployment） | created |
| 应用更新 | $hw/events/deployment/+/updated | 容器应用（deployment） | updated |
| 节点上线 | $hw/events/edgeNode/+/online    | 边缘节点（edgeNode）   | online  |
| 节点离线 | $hw/events/edgeNode/+/offline   | 边缘节点（edgeNode）   | offline |
   
#### 系统订阅流程
系统订阅流程如下：
1. 在APIG创建供IEF调用的API。
2. 在IEF中创建APIG端点。
3. 在IEF中创建系统订阅。
 
 #### 创建API
在APIG中创建API，具体请参见[APIG 快速入门](https://support.huaweicloud.com/qs-apig/apig-ug-180307002.html)。
该API用于给IEF调用，发送系统事件消息。
 #### 创建APIG端点
1. 登录[IEF控制台](https://console.huaweicloud.com/ief2.0/)。
2. 选择左侧导航栏"边云消息 \> 消息端点"。
3. 单击页面右上角"创建消息端点"，填写相关参数。 
   图1创建消息端点   
   ![](https://support.huaweicloud.com/usermanual-ief/zh-cn_image_0248811674.png "点击放大")
   - **消息端点类型**：选择APIG。
   
   - **消息端点名称**：输入消息端点名称。
   
   
   
   
4. 单击"确定"，即创建消息端点成功，返回到消息端点列表页面。
 
 #### 创建系统订阅
1. 登录[IEF控制台](https://console.huaweicloud.com/ief2.0/)。
2. 选择左侧导航栏"边云消息 \> 系统订阅"。
3. 单击页面右上角"创建系统订阅"，填写相关参数。 
   图2创建系统订阅   
   ![](https://support.huaweicloud.com/usermanual-ief/zh-cn_image_0248813969.png "点击放大")
   - **系统订阅名称** ：输入系统订阅名称。
     ![](https://support.huaweicloud.com/usermanual-ief/public_sys-resources/caution_3.0-zh-cn.png)
     系统订阅和[消息路由](https://support.huaweicloud.com/usermanual-ief/ief_01_0018_0.html#ief_01_0018_0__section9753361412)是同一种资源，命名不能冲突。
     
   
   - **订阅主题** ：订阅事件的主题和操作，如创建容器应用，当前支持订阅的事件如[表1]。
   
   - **目的端点** ：[创建APIG端点]中创建的端点。
   
   - **目的端点资源** ：[创建API]中创建的API资源。
   
   
   
   
4. 单击"创建"，完成系统订阅创建。
 
#### 订阅后说明
创建系统订阅后，当有系统事件发生，在[IEF管理控制台](https://console.huaweicloud.com/ief2.0/)系统订阅列表中，会记录消息转发的次数。
图3转发消息数   
![](https://support.huaweicloud.com/usermanual-ief/zh-cn_image_0249622951.png "点击放大")
同时IEF会调用APIG中注册的API，请求消息体如下所示。请求消息体采用标准的CloudEvents格式，CloudEvents详细信息请参见[这里](https://github.com/cloudevents/spec)。
```
{
"data": {
"event_type": "instance",
"operation": "created",
"timestamp": 134567677,
"topic": "$hw/events/deployment/+/created",
"name": "xxxx",
"attributes": {"ID":"x"}
},
        "datacontenttype": "application/json",
"source": "sysevents",
"id": "xxxx",
"time": "2020-11-5 xxx"
}
```
- data：系统事件的数据。
  - event_type：资源类型，String类型。
  
  - operation：资源的操作类型，String类型。
  
  - topic：消息发送的Topic，String类型。
  
  - timestamp：事件产生的时间戳，Uint64类型。
  
  - name：资源名称，String类型。
  
  - attributes：资源的属性，删除资源时消息中无此参数，Object类型。
   
- datacontenttype：系统事件数据内容的格式，String类型。
- source：系统事件的来源，String类型。
- id：系统事件ID，String类型。
- time：系统事件产生时间，String类型。
当前支持的资源类型、操作和Topic如[表1]所示。
