目录
引言
我以前对云端技术了解点比较少,像PaaS、SaaS也就是知道个概念。最早了解华为云的Serverless是在HDC 2023上,不过当时没有想到和我做的物联网的联系。最近在设计一个智能物联网的案例使发现需要一个http服务,就想到了华为云的云函数FunctionGraph,觉得这个正好符合我的需要。
FunctionGraph的概念
华为云函数工作流 FunctionGraph 是一项基于事件驱动的函数托管计算服务,支持用户以极简的方式开发和运行代码,无需管理底层服务器等基础设施。以下是 FunctionGraph 的核心概念和特点:
核心概念
-
事件驱动:FunctionGraph 通过事件触发函数执行。事件可以来自多种华为云服务,如对象存储服务(OBS)、消息通知服务(SMN)、API 网关等。
-
函数托管:用户只需编写业务逻辑代码并上传,FunctionGraph 会自动管理函数的运行环境,包括资源分配、弹性伸缩和故障恢复。
-
按需计费:FunctionGraph 采用按实际使用量计费的模式,仅在函数执行时计费,不执行时不产生费用。
主要特点
-
极简开发与部署:支持多种编程语言(如 Python、Node.js、Java 等),提供在线代码编辑和多种代码上传方式(如 ZIP 包、JAR 包等)。
-
弹性伸缩:根据请求量自动增加或减少函数实例,毫秒级响应流量变化,支持高并发场景。
-
高可用性:支持多可用区部署,自动故障恢复,确保函数运行的高可靠性。
-
丰富的触发器:支持多种触发器,如定时触发器、API 网关触发器、OBS 触发器等,满足不同业务场景需求。
-
可视化编排:通过函数流功能,用户可以可视化地编排多个函数的执行顺序,实现复杂业务逻辑。
应用场景
-
实时文件处理:例如,当文件上传到 OBS 时,自动触发函数进行压缩、转码等操作。
-
实时数据流处理:结合数据接入服务(DIS),处理实时流数据,如日志分析、物联网数据处理等。
-
Web/移动应用后端:与华为云其他服务结合,快速构建高可用、自动伸缩的 Web 或移动应用后端。
-
人工智能服务集成:与华为云 EI 企业智能服务集成,快速构建文字识别、图像内容审核等应用。
FunctionGraph 提供了一种高效、灵活且低成本的 Serverless 计算解决方案,适用于多种业务场景,能够帮助用户快速构建和部署应用程序。
构建一个测试程序
作为第一个测试程序,我决定实现一个在华为云函数中随机返回一条土味情话的代码示例。
步骤 1:准备工作
在开始之前,需要完成以下准备工作:
- 注册华为云账号:如果还没有华为云账号,需要先进行注册。
- 开通函数工作流服务:登录华为云控制台,找到函数工作流服务并开通。
步骤 2:创建云函数
- 登录华为云函数工作流控制台。
- 点击 “创建函数” 按钮。
- 选择 “创建空白函数”。
- 填写函数基本信息,如函数名称、运行环境(这里选择 Python 3.9)等。
- 点击 “创建函数”。
步骤 3:编写代码
在代码编辑区域,粘贴以下 Python 代码:
import random
# 50 条土味情话列表
love_lines = [
"你知道我的缺点是什么吗?是缺点你。",
"我最近有点忙,忙什么?忙着喜欢你。",
"你知道我的心在哪边吗?左边啊。不,在你那边。",
"你知道我为什么感冒了吗?因为我对你完全没有抵抗力。",
"你知道我喜欢吃什么水果吗?想你这个开心果。",
"你知道我为什么这么犯困吗?因为我为你所困。",
"你知道我为什么不上天吗?因为地上有你。",
"你知道我为什么喜欢睡觉吗?因为梦里有你。",
"你知道我为什么咳嗽吗?因为你偷走了我的心。",
"你知道我的超能力是什么吗?是超级喜欢你。",
"你知道我喜欢什么季节吗?我喜欢有你的季节。",
"你知道我的爱好是什么吗?爱你。",
"你知道我想成为什么人吗?成为你的人。",
"你知道我为什么这么黑吗?因为我偷偷地爱上了你,我要变成暗中保护你的骑士。",
"你知道我为什么这么胖吗?因为你偷偷在我心里种了很多甜蜜的种子。",
"你知道我为什么这么懒吗?因为我懒得离开你。",
"你知道我为什么这么开心吗?因为你走进了我的心里。",
"你知道我为什么这么怕冷吗?因为没有你的拥抱。",
"你知道我为什么这么怕热吗?因为看到你就脸红心跳。",
"你知道我为什么这么爱喝水吗?因为你是我的甜心。",
"你知道我为什么这么喜欢笑吗?因为你的出现让我生活充满阳光。",
"你知道我为什么这么喜欢星星吗?因为你眼睛里有星星。",
"你知道我为什么这么喜欢月亮吗?因为我想和你一起看月亮。",
"你知道我为什么这么喜欢花吗?因为你比花还美。",
"你知道我为什么这么喜欢书吗?因为书里有和你一样美好的故事。",
"你知道我为什么这么喜欢音乐吗?因为音乐能让我想起你。",
"你知道我为什么这么喜欢旅行吗?因为我想和你一起看遍世界。",
"你知道我为什么这么喜欢美食吗?因为我想和你一起分享美味。",
"你知道我为什么这么喜欢拍照吗?因为我想记录和你在一起的每一刻。",
"你知道我为什么这么喜欢睡觉吗?因为梦里可以见到你。",
"你知道我为什么这么喜欢逛街吗?因为可以和你手牵手。",
"你知道我为什么这么喜欢运动吗?因为想在你面前展现最好的自己。",
"你知道我为什么这么喜欢下雨吗?因为雨中可以和你更靠近。",
"你知道我为什么这么喜欢晴天吗?因为你的笑容像阳光一样灿烂。",
"你知道我为什么这么喜欢冬天吗?因为可以和你一起堆雪人。",
"你知道我为什么这么喜欢夏天吗?因为可以和你一起吃冰淇淋。",
"你知道我为什么这么喜欢春天吗?因为春天是我们相遇的季节。",
"你知道我为什么这么喜欢秋天吗?因为秋天可以和你一起看落叶。",
"你知道我为什么这么喜欢咖啡吗?因为咖啡的苦就像我想你时的滋味。",
"你知道我为什么这么喜欢茶吗?因为茶的清香就像你给我的感觉。",
"你知道我为什么这么喜欢星星吗?因为星星就像你眼睛一样闪亮。",
"你知道我为什么这么喜欢大海吗?因为大海就像我对你的爱一样深沉。",
"你知道我为什么这么喜欢森林吗?因为森林就像我们的爱情一样充满生机。",
"你知道我为什么这么喜欢城市吗?因为城市里有你生活的痕迹。",
"你知道我为什么这么喜欢乡村吗?因为乡村可以和你一起过宁静的生活。",
"你知道我为什么这么喜欢电影吗?因为电影里有和我们一样的爱情故事。",
"你知道我为什么这么喜欢游戏吗?因为可以和你一起组队打怪。",
"你知道我为什么这么喜欢宠物吗?因为想和你一起养一只可爱的小动物。",
"你知道我为什么这么喜欢手工吗?因为想为你亲手做一件礼物。",
"你知道我为什么这么喜欢画画吗?因为想把你画进我的画里。",
"你知道我为什么这么喜欢写作吗?因为想把我们的故事写下来。"
]
def handler(event, context):
# 随机选择一条土味情话
random_line = random.choice(love_lines)
# 返回包含随机情话的 JSON 响应
return {
"statusCode": 200,
"isBase64Encoded": False,
"headers": {
"Content-Type": "application/json"
},
"body": "{\"love_line\", " + random_line + "\"}"
}
步骤 4:测试函数
先点击“部署代码”按钮,然后点击 “测试” 按钮,输入测试事件(可以使用默认的测试模板),点击 “开始测试”。如果一切正常,你将在测试结果中看到随机返回的一条土味情话。
步骤 5:发布函数
测试通过后,如果想在浏览器中访问这个云函数,就需要将函数发布到生产环境。
这需要借助于API网关(API Gateway,APIG)。APIG提供高性能、高可用、高安全的API托管服务,能快速将企业服务能力包装成标准API服务,轻松构建、管理和部署任意规模的API。
在函数详情页面,点击“创建触发器”按钮。
选择触发器类型为“APIG”。配置触发器信息,包括 API 分组(如果没有就创建一个)、环境、请求方法(GET
)等。这里的安全认证改为None,方便在浏览器中测试(不过这种方式所有用户都可以访问,建议测试后删除云函数,免得被人随意使用,导致产生费用)。点击“确定”,完成触发器创建。
APIG中可以看到调用URL,这个就是用于在浏览器中调用的URL。
现在,你就可以通过调用该云函数来随机获取一条土味情话了。
结语
使用云函数确实很方便,省去了搭建网站的繁琐步骤。