首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

基于 Kubernetes 集群的 Serverless 在 IoT 中的应用(6)

基于 Kubernetes 集群的 Serverless 在 IoT 中的应用(6)

创建并验证第一个 Action:formatInput我们先看以一个 Action:formatInput,它的源码如下:
清单 1. formatInput                源码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
$cat formatInput.js
function main(params) {

    // Format the Topic to replace . with /
    if(params.topic) {
      params.topic = params.topic.replace(/[.]/g,'/');
    }

    // Parse the input data to provide lat/long
    if(params.data) {
      data_values = params.data.split(" ");

      params.latitude = data_values[0];
      params.longitude = data_values[1];
    }

return params;




这个 Action 的作用是对传入的参数进行格式化(资产将其经纬度实时经纬度传递过来,formatInput 对传递过来的数值进行格式化):
  • 对于传入的 topic 参数,使用正斜杠替换名为 topic 的参数中的任何句点。
  • 对于传入的数据进行数据拆分,前半部分是 latitude(维度),后半部分是 longitude(经度)。
创建 Action:
图 19. 创建                    Action
Action 创建成功。
然后,我们创建一个触发 Action 的 Trigger
$ wsk -i trigger create iotServerlessTrigger
图 20. 查看                    Trigger
创建一个 Rule,将 iotServerlessTrigger Trigger 与 formatInput Action 相关联:
图 21. 创建 Rule
截至到目前,Trigger 已通过 Rule 连接到 Action,我们可以通过触发 Trigger 来调用 Action。 formatInput                Action 需要指定两个参数:topic 和 data。
图 22. 触发                    Trigger
当 Trigger 被触发,会输出一个 ID(7d68e1ff20014a24a8e1ff2001ea24e5)。这表示 OpenWhisk                已经处理了请求。而返回的 ID 是与 Activation Record 相关的。
虽然我们调用了 Trigger,但 Trigger 并不会产生结果,结束是由 Rule 调用 Action 才能产生最终的结果。
但我们可以通过刚才输出的 ID,获取 activationId。
图 23. 获取                    activationId
直接查看 log 部分,得到 activationId:2f6d169ce51046d9ad169ce510d6d912。
图 24. 查看 log                    结果
最后通过上一步获取到的 activationid(2f6d169ce51046d9ad169ce510d6d912),来查询                activation:
图 25.                    执行命令获取结果
命令执行成功,我们看执行结果的核心部分:
图 26. 查看执行结果
如上图所示,我们调用 Trigger 时传入的参数,通过我们定义的 Rule 发送到 formatInput Action,Action                根据字段中提供的值拆分纬度和经度字段(latitude 和 longitude)。
返回列表