上云无忧 > 文档中心 > 百度智能云智能边缘 - 自定义函数与依赖包整体下发
智能边缘
百度智能云智能边缘 - 自定义函数与依赖包整体下发

文档简介:
在编写函数时,我们常常会需要引用第三方依赖,本文将介绍如何把代码以及第三方依赖上传至云端 BOS,并在函数应用中引入该函数。 本文将以 Python3.6 为例进行说明。
*此产品及展示信息均由百度智能云官方提供。免费试用 咨询热线:400-826-7010,为您提供专业的售前咨询,让您快速了解云产品,助您轻松上云! 微信咨询
  免费试用、价格特惠

在编写函数时,我们常常会需要引用第三方依赖,本文将介绍如何把代码以及第三方依赖上传至云端 BOS,并在函数应用中引入该函数。

本文将以 Python3.6 为例进行说明。

配置项创建

代码开发

在将代码上传到云端前,我们需要先在开发机上开发和测试代码。

我们编写的用例是获取 https://cloud.baidu.com/ 的 headers 信息,新建一个文件夹,代码文件命名 index.py,代码如下:

#!/usr/bin/env python3 # -*- coding: utf-8 -*- import requests def handler(event, context): """
  data: {"action": "A"}
  """ if 'action' in event: if event['action'] == 'A': r = requests.get
('https://cloud.baidu.com/') if str(r.status_code) == '200': event['info']
 = dict(r.headers) else: event['info'] = 'exception found' else: event['info'] 
= 'action error' else: event['error'] = 'action not found' return event

可以看到我们用到了 requests 库,接下来我们需要把 requests 源码下载到此文件夹内,命令行输入:

pip3 download requests

下载完成之后,我们发现文件夹内有多个 .whl 结尾的压缩包。

解压 .whl 压缩包,得到源码。

unzip -d . "*.whl"

这样我们就得到了源码,但压缩包和 .dist-info 并不是我们所需要的,为了使文件体积尽量的小,我们可以把这些文件删除,命令行输入:

rm -rf *.whl *.dist-info

然后我们进行一个简单的测试,看下 index.py 是否可以正确的输出我们想要的内容。

在此文件夹下新建一个 test.py 文件,代码内容如下:

import index

event = {} event['action'] = "A" print(index.handler(event, ""))

可以看到正确输出了我们想要的 handler 内容,测试完成我们可以删除此文件。

将 index.py 和5个源码文件夹压缩成ZIP包,然后上传到云端 BOS。

创建配置项

我们需要创建"配置项"来引入上步中上传到 BOS 的函数。

我们需要设置配置项函数标签,表示这个是一个函数配置项,可供函数应用引用。

然后选择"引入文件",选中刚才上传到 BOS 的文件,并选择"解压",点击确定,完成导入操作。

应用创建

创建函数应用,并选择上步创建的配置项。

新建节点

接下来我们配置边缘规则 baetyl-broker、baetyl-rule 模块来调用上述函数。

在节点创建界面,新建节点。

并将上步中创建的应用绑定到该节点上。

配置 baetyl-rule

在节点"应用部署"菜单栏,选择 baetyl-rule 模块,点击查看。

然后点击数据卷,选择第一个配置项进行配置。

baetyl-rule 的配置如下:

rules: - name: rule1 source: topic: broker/topic1 target: topic: broker/topic2
 function: name: bie-python/process logger: level: debug encoding: console

函数的完整路径是 [服务名称/函数入口] ,则上述 process 这个python函数的完整调用路径就是:bie-python/process。

配置 baetyl-broker

按照上步方法配置 baetyl-broker, 配置文件如下:

listeners: - address: tcp://0.0.0.0:8004 principals: - username: test password: hahaha 
permissions: - action: pub permit: ["#"] - action: sub permit: ["#"] logger: level: info

并在 baetyl-broekr 的服务配置界面添加 8004 端口,将服务暴露到宿主机上。

上述配置成成功后,在端侧执行 kubectl 可以看到如下现象:

端侧验证

等待上述服务部署到端侧后,我们使用 mqttbox 发送消息到 baetyl-broker 来进行测试。

首先我们使用 mqttbox 连接,连接信息如下:

连接成功后,如下所示:

我们的输入用例为 {"action":"A"} 结果如图,输出结果正是请求 https://cloud.baidu.com/ 的 header 内容。

相似文档
  • 1、背景描述: 在使用边缘函数时,边缘函数常常需要使用import来引用第三方依赖。本文将介绍如何将依赖包上传至对象存储,以及如何在编写函数代码时直接引用依赖包。本文将以 Python3.6 为例进行说明。
  • 1、场景: 边缘节点上部署了AI模型,现在希望使用函数触发式调用AI模型,并将AI模型返回结果发送到边缘Broker当中,供其他用户应用订阅。 2、方案: 整体边缘函数调用结构如下图所示:
  • 配置项是一种用于存储应用所需配置信息的资源类型,配置项允许您将配置文件从应用容器镜像中解耦,从而增强应用的可移植性。和密文类型配置存储敏感信息不同,配置项主要用于存储常规的配置信息,例如一组配置文件。
  • 函数配置项是配置项的子集,默认添加了函数标签。用于存储函数应用需要加载的程序脚本,支持 Python36、Nodejs10、SQL 等运行时。添加函数标签后,可以在创建函数应用时选择该配置项使用。
  • 1、简介: 进程程序包(简称“程序包”),是一种特殊的配置项,它指定了进程模式应用的程序服务入口。 一个程序包对应一个程序入口,一个进程模式应用可以包含多个程序包。即部署一个进程模式应用,可以下发多个程序服务。
官方微信
联系客服
400-826-7010
7x24小时客服热线
分享
  • QQ好友
  • QQ空间
  • 微信
  • 微博
返回顶部