
# 对接IEF实现边缘节点管理功能
#### 背景信息
智能边缘平台（Intelligent EdgeFabric，简称IEF ）满足客户对边缘计算资源的远程管控、数据处理、分析决策、智能化的诉求， 为企业提供边、云协同的一体化边缘计算解决方案。更多介绍，请参见[智能边缘平台](https://support.huaweicloud.com/ief/index.html)。
在AstroZero中，通过应用与华为IEF（Intelligent EdgeFabric）对接，实现在5G智慧加油站解决方案中，通过华为云IEF服务来纳管边缘节点，并通过IEF云边通信能力来向边缘节点发送业务命令。
 #### 前提条件
- 已申请IEF服务，具体操作请参见[智能边缘平台](https://support.huaweicloud.com/ief/index.html)。
- 已获取AK（Access Key ID）、SK（Secret Access Key），即访问密钥对，具体操作请参见[获取AK/SK](https://support.huaweicloud.com/devg-apisign/api-sign-provide-aksk.html)。
 
#### 创建IEF连接器
1. 参考[创建连接器入口](https://support.huaweicloud.com/usermanual-astrozero/astrozero_05_0653.html#astrozero_05_0653__section54416265268)中操作，进入创建连接器页面。
2. 在左侧列表中，选择"AI \> 智能边缘平台"，单击"+"。 
   图1新建智能边缘平台连接器   
   ![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001933046424.png "点击放大")
   
   
3. 设置IEF对接参数，单击"保存"。 
   图2创建智能边缘平台   
   ![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001933046472.png "点击放大")
   - 名称：连接器的名称。
   
   - 区域：IEF服务的区域。
   
   - 访问密钥ID：与私有访问密钥关联的唯一标识符，访问密钥ID和私有访问密钥一起使用，对请求进行加密签名。配置为[前提条件]中"AK"的值。
   
   - 密钥：私有访问密钥。与访问密钥ID结合使用的密钥，对请求进行加密签名，可标识发送方，并防止请求被修改。配置为[前提条件]中"SK"的值。
   
   - 打包当前配置：默认为选中，对信息敏感的场景，建议不勾选。 选中该选项后，应用打包时会将当前配置的连接器信息一并打出。例如，如果应用包发布到运行环境，当前配置默认会被同步到运行环境中。
     
   
   
   
   
4. （可选）测试连接器。 
   1. 在连接器详情页面，单击"测试"。
   
   2. 选择接口，设置入参后，单击"测试"。
      图3配置测试页面   
      ![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001960125749.png "点击放大")
      - 选择接口：调用的IEF的接口名。
      
      - 入参：调用接口的入参，所有接口的入参合集如下：
        - project_id：项目ID。
        
        - node_id：边缘节点ID。
        
        - device_id：边缘设备ID。
        
        - topic：IEF上的消息路由中的"源端点资源"取值，去掉"/"。获取方法如下：
          1. 在IEF服务控制台的左侧导航栏中，选择"边云消息 \> 消息路由"。
          
          2. 获取所用的消息路由的"源端点资源"取值。 "源端点资源"取值以"/"打头，去掉"/"，剩下部分即为该"topic"取值。
             
           
        
        - 发送的消息(json)：发送的消息的json格式。
         
      
      
      提示如下信息，表示测试成功。
      图4测试成功   
      ![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001960285581.png "点击放大") 
   
   
   
   
 
#### 在脚本中调用连接器
在脚本中，调用连接器实现调用IEF的接口。
1. 参考[开发一个简单脚本实例](https://support.huaweicloud.com/usermanual-astrozero/astrozero_05_5031.html)中操作，创建一个空白脚本。
   
   图5新建空白脚本   
   ![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001932887024.png "点击放大")
   
   
2. 在脚本编辑器中，输入如下代码。 
   ```
   import { Decimal } from 'decimal';
   import { Error } from 'error';
   import * as ief from 'ief';
   export class Input {
       @action.param({ type: "String", required: true, description: "type" })
       project_id: string;
       //   @action.param({ type: "String", required: true, description: "the operation value 2" })
       //  node_id: string;
   }
   export class Output {
       @action.param({ type: "Object", required: true })
       result: Object;
   }
   export class Calculator {
       @action.method({ input: "Input", output: "Output", description: "do a operation" })
       run(input: Input): Output {
           let output = new Output();
           let cli = ief.newClient("ief_test");
           output.result = cli.getProjectNode(input.project_id);
           //console.log(output.result);
           return output;
       }
   }
   ```
   其中，ief.newClient("***ief_test***")中的"ief_test"为连接器的名称。
   
   
3. 单击脚本编辑器页面上方的![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001960125777.png)，保存脚本。
4. 保存成功后，单击![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001960285597.png)，运行脚本。
5. 在输入参数页签，输入请求参数的项目ID，单击测试窗口右上角的![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001960285585.png)。
   
   ```
   {
       "project_id":"XXXXXXXXXXX"
   }
   ```
   在输出参数页签，显示出边缘节点列表，表示执行脚本成功。
   
   
6. 单击脚本编辑器页面上方的![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001933046416.png)，启用脚本。
 
#### 在服务编排中调用连接器
在服务编排中，调用连接器实现与IEF的对接。
1. 参考[如何开发服务编排](https://support.huaweicloud.com/usermanual-astrozero/astrozero_05_0601.html)中操作，创建一个空白服务编排。
   
   图6添加服务编排   
   ![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001960125741.png "点击放大")
   
   
2. 在服务编排设计页面，从左侧"连接器 \> AI"中，拖拽"IEF"图元到画布中。 
   IEF是系统预置的，与IEF对接的接口。
   图7拖拽IEF图元到画布中   
   ![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001960125793.png "点击放大")
   
   
3. 创建该服务编排的入参和出参变量。 
   由于该服务编排调用的是IEF的查询边缘节点列表接口，需要定义该服务编排的入参和出参，与接口的入参和出参类型保持一致。
   表1服务编排变量 
   | 变量类型  | 参数名       | 参数类型    | Input/Output Type | 说明       |
   |:---|:---|:---|:---|:---|
   | 普通变量  | projectID | 文本      | Input Only        | 项目ID。    |
   | 结构体变量 | result1   | 私有结构体变量 | Output Only       | 输出的查询结果。 |
      
   1. 单击服务编排设计页面的空白处，在编辑器页面右侧选择![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001960125801.png)。
   
   2. 在私有结构体中，单击"新增"。
      创建输出参数结构体类型变量"result1"前，需要先创建私有结构体类型。
      图8添加私有结构体类型   
      ![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001960285557.png "点击放大") 
   
   3. 设置私有结构体名称，成员不用定义。
      图9配置私有结构体   
      ![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001960285541.png "点击放大") 
   
   4. 在服务编排设计页面右侧，单击![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001960285605.png)。
   
   5. 在全局上下文页面，单击"对象变量"后的加号。
   
   6. 选择"私有结构体"，设置页面参数，单击"保存"。
      图10配置私有结构体变量   
      ![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001933046468.png "点击放大")
      - 名称：结构体变量的名称。
      
      - 私有结构体：选择已创建的结构体类型名称，如result。
      
      - 默认值：变量的默认取值。
      
      - 描述：变量的描述说明。
      
      - 是否为数组：是否为数组型变量，即集合变量。
       
   
   7. 在服务编排设计页面右侧，选择![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001933046464.png)。
   
   8. 在全局上下文页面，单击"变量"后的加号。
      图11创建变量   
      ![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001960125797.png "点击放大") 
   
   9. 双击变量名，修改为"projectID"。
      图12设置变量   
      ![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001960125789.png "点击放大") 
   
   
   
   
4. 在服务编排设计页面，选中IEF图元后单击![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001960285545.png)，设置基本信息。
   
   图13设置基本信息   
   ![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001960285553.png "点击放大")
   - 标签：图元在页面展示的名称。
   
   - 名称：图元在系统中的唯一标识，不能和其他图元相同。
   
   - 连接器：该服务编排使用的连接器的名称。
   
   
   
   
5. 单击![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001933046444.png)，设置动作参数。
   
   图14设置动作参数   
   ![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001932887020.png "点击放大")
   - 动作：调用IEF的具体接口，本示例选择"查询边缘节点列表"。
   
   - 输入参数：调用接口的输入参数。在"目标"中选择"project_id"，在"源"中拖入全局上下文中的"projectID"。所有接口的输入参数合集如下：
     - project_id：项目ID。
     
     - node_id：边缘节点ID。
     
     - device_id：边缘设备ID。
     
     - topic：IEF上的消息路由中的"源端点资源"取值，去掉"/"。获取方法如下：
       1. 在IEF服务控制台的左侧导航栏中，选择"边云消息 \> 消息路由"。
       
       2. 获取所用的消息路由的"源端点资源"取值。 "源端点资源"取值以"/"打头，去掉"/"，剩下部分即为该"topic"取值。
          
        
     
     - 发送的消息(json)：发送的消息的json格式。
      
   
   
   
   
6. 连接开始和IEF图元。 
   图15连接图元   
   ![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001960285537.png)
   
   
7. 单击页面上方的![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001960125773.png)，保存服务编排。
8. 保存成功后，单击![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001933046476.png)，运行服务编排。
9. 设置输入参数项目ID，单击"运行"。 
   ```
   {
       "project_id":"XXXXXXXXXXX"
   }
   ```
   若输出边缘节点列表，表示成功调用连接器。
   ![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001960125729.png "点击放大")
   
   
10. 单击页面上方的![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001933046440.png)，启用服务编排。
 
