无服务器云函数开发实战
无服务器云函数开发实战
实验预计耗时:30分钟
1. 课程背景
1.1 课程目的
腾讯云云函数是腾讯云提供的无服务器(Serverless)执行环境。开发者只需编写简单的、目的单一的云函数,并将它与您的腾讯云基础设施及其他云服务产生的事件关联起来。
本课程实验会带领学员以腾讯云 SCF 为例,搭建一个图书管理的后台,体验腾讯云无服务器云函数 SCF 的基本使用。
1.2 课前知识准备
学习本课程前,学员需要了解以下前置知识:
- 无服务器云函数
- 无服务器云函数(Serverless Cloud Function,SCF)是腾讯云为企业和开发者们提供的无服务器执行环境,帮助您在无需购买和管理服务器的情况下运行代码。您只需使用平台支持的语言编写核心代码并设置代码运行的条件,即可在腾讯云基础设施上弹性、安全地运行代码。SCF 是实时文件处理和数据处理等场景下理想的计算平台。
- Serverless 不代表没有服务器,只是用户不再需要关心底层资源。当然,这也意味着用户无法登录服务器,并且也不需要想办法优化它。开发者只需关心最核心的代码片段。这些代码完全由事件触发(event-trigger),平台根据请求自动平行调整服务资源,拥有近乎无限的扩容能力,空闲时则没有任何资源在运行。代码运行无状态,可以轻易实现快速迭代、极速部署。
2.实验环境
2.1 实验操作环境
本课程需要以下实验操作环境:
- 可以接入互联网的笔记本电脑或者台式机(本实验使用 Windows 系统)
- 要求有腾讯云账号,能够访问腾讯云官网https://cloud.tencent.com
2.2 实验架构图
本实验案例以腾讯云云函数为平台,构建一个简单的图书管理系统。实验通过 API 网关把 SCF 的逻辑通过 API 的方式暴露出来,以供调用,最终返回图书信息给用户。本实验的架构图如下所示:
图书管理后台提供的接口有:
- /article/{articleId} GET。根据图书 id,返回图书的信息。
- /article/ GET。返回全部图书列表信息。
2.3 实验的数据规划表
资源名称 | 数据 | 说明 |
---|---|---|
腾讯云账号 | 账号:XXXXXXXX、密码:XXXXXXXX | 涉及产品如下:API 网关、SCF |
3. 实验流程
本实验案例以腾讯云云函数为平台,构建一个简单的图书管理系统,用户可以通过URL访问获取文章信息和文章列表。
本实验涉及两个部分:
- 实验环境部署
- 测试云函数及API网关
4. 实验步骤
任务1 实验环境部署
【任务目标】
在任务中,您将创建一个函数来实现博客文章的 API 响应。
【任务步骤】
1、新建无服务云函数
1.登录腾讯云官网,进入无服务器云函数控制台,选择函数服务页面。网址为:https://console.cloud.tencent.com/scf?rid=1
2.在函数服务选项卡内,选择广州地域,单击新建,进入新建函数页面。
3.然后填写以下参数信息,单击下一步。如下图所示:
配置 | 参数 |
---|---|
函数名称 | bookstore |
运行环境 | Python 3.6 |
创建方式 | 模板函数 |
模板搜索 | api_service |
4.保持默认配置,单击完成,完成函数的创建。
5.选择创建好的函数(这里以bookstore为例),点击函数代码页签:
确认代码如下(如已有变更,将代码拷贝到代码编辑框中并保存)。
# -*- coding: utf-8 -*-
import sys
import logging
import json
logging.basicConfig(level=logging.INFO, stream=sys.stdout)
logger = logging.getLogger()
logger.setLevel(level=logging.INFO)
logger.info('Loading function')
testArticleInfo=[
{"id":1,"category":"blog","title":"hello world","content":"first blog! hello world!","time":"2017-12-05 13:45"},
{"id":2,"category":"blog","title":"record info","content":"record work and study!","time":"2017-12-06 08:22"},
{"id":3,"category":"python","title":"python study","content":"python study for 2.7","time":"2017-12-06 18:32"},
]
def main_handler(event,content):
logger.info('start main_handler')
if "requestContext" not in event.keys():
return {"errorCode":410,"errorMsg":"event is not come from api gateway"}
if event["requestContext"]["path"] != "/article/{articleId}" and event["requestContext"]["path"] != "/article":
return {"errorCode":411,"errorMsg":"request is not from setting api path"}
if event["requestContext"]["path"] == "/article" and event["requestContext"]["httpMethod"] == "GET": #获取文章列表
retList = []
for article in testArticleInfo:
retItem = {}
retItem["id"] = article["id"]
retItem["category"] = article["category"]
retItem["title"] = article["title"]
retItem["time"] = article["time"]
retList.append(retItem)
return retList
if event["requestContext"]["path"] == "/article/{articleId}" and event["requestContext"]["httpMethod"] == "GET": #获取文章内容
articleId = int(event["pathParameters"]["articleId"])
for article in testArticleInfo:
if article["id"] == articleId:
return article
return {"errorCode":412,"errorMsg":"article is not found"}
return {"errorCode":413,"errorMsg":"request is not correctly execute"}
2、新建 API 网关
1.进入 API 网关控制台。
2.新建 API 网关,配置如下图所示,确认无误后点击提交:
配置 | 参数 |
---|---|
所属地域 | 广州 |
服务名 | online_bookstore_api |
前端类型 | http和https |
访问方式 | 公网 |
集群类型 | 共享型 |
3.API 网关创建成功后,点击 API 网关名称进入该 API 网关的详情页面。
4.单击顶部菜单栏右侧管理API,选择通用API, 单击新建按钮创建 API。
3、创建 ID 搜索的 API 网关
1.创建按照ID获取图书信息的API网关,首先进行前端配置:
配置 | 参数 |
---|---|
API名称 | 根据ID获取文章信息 |
前端类型 | HTTP |
路径 | /article/{articleId} |
请求方法 | GET |
鉴权类型 | 免鉴权 |
参数配置 | 参数名:articleId;参数位置:Path;类型:string |
2.进行后端配置,注意后端类型选择 cloud_function,云函数的名称选择之前创建的无服务器云函数名称,点击下一步。
3.选择返回类型为 JSON,点击完成按钮完成 API 的创建。
4.发布服务,点击提交。
4、创建获取列表的 API 网关
1.创建获取图书信息列表的 API 网关,具体步骤和步骤3大体相同,注意接口的路由信息是不一样的。首先点击新建通用 API:
2.前端配置,信息参考如下;
配置 | 参数 |
---|---|
API 名称 | 获取文章列表 |
前端类型 | HTTP |
路径 | /article |
请求方法 | GET |
鉴权类型 | 免鉴权 |
3.后端配置,信息参考如下;
4.选择返回类型为 JSON,点击完成按钮完成 API 的创建。
5、触发管理
1.进入 SCF 的控制台,选择 Step 1中新建的函数(这里以 bookstore 为例),选择触发管理页签,点击创建触发器。
2.添加无服务云函数(这里以 bookstore 为例)的触发器,填写触发规则如下,确认无误后点击提交:
配置 | 参数 |
---|---|
触发方式 | API网关触发器 |
API服务类型 | 使用已有API服务 |
API服务 | 选择已创建的API服务online_bookstore_api |
请求方法 | ANY |
发布环境 | 发布 |
鉴权方法 | 免鉴权 |
任务2 测试云函数及 API 网关
【任务目标】
对前面任务创建的云函数和 API 进行测试。
【任务步骤】
1、新建测试模板
1.在完成前面实验步骤后,进入新创建的无服务器云函数(这里是 bookstore)详情页,选择函数代码页签,在代码编辑区下方找到当前测试模板,在弹出的下拉框中选择 API Gateway 事件模板。
2.点击 API Gateway 事件模板后的小眼睛,修改测试内容
2-1.修改访问的 URL 路径,请求的方法为 GET,如下图所示:
"path": "/article/{articleId}",
"httpMethod": "GET",
2-2.定义 URL 路径中的变量
"pathParameters": {
"articleId": "1"
},
2-3.修改 HTTP 请求的方法为 GET(约37行),然后点击提交。
3.创建测试模板进行测试,校验测试结果:
2、验证结果
1.在 API 网关的服务信息栏,查看 API 网关的域名,点击复制。
2.测试新建的 API 网关,注意服务是发布在发布环境中,所以在测试服务时需要在默认外网域名后加上release。
{公网访问地址}/release/article
具体操作结果如下图所示:
3.测试通过图书 ID 查找图书信息的 API:
{公网访问地址}/release/article/1
至此,您已经完成了无服务器云函数开发实战的全部任务。
5. 注意事项
如实验资源无需保留,请在实验结束后及时销毁,以免产生额外费用。
学员评价