说明:服务型函数功能在全新升级中,后期会开放申请使用,您可以前往 云函数介绍页 来了解最新进展。
操作场景
本文旨在通过 Express、Koa 和 Egg 的 Hello World 示例介绍服务型函数(HTTP Service)使用方法,帮助您了解服务型函数的基本使用流程和 SCF 控制台的基本操作。例如创建服务、上传代码、测试访问和查看运行日志和监控。
您可以结合示例步骤进行项目开发,服务创建及访问验证。本文示例步骤如下:
- 使用 Node.js Web 框架(例如 Express、Koa、Egg)完成项目开发。
- 创建服务,并上传打包后的项目代码。
- 访问服务提供的域名,验证服务的运行情况。
前提条件
- 已安装 Node.js。
- 已开通服务型函数功能。
操作步骤
Express Hello World 示例
创建 Nodejs Express 项目
- 根据实际需求,选择目录路径,并在该路径下创建新的目录,用作于项目目录。
例如,创建一个名称为 helloexpress 的项目目录。 - 进入 helloexpress 目录,并在该目录下执行以下命令,初始化 node 项目。
说明:
执行命令后,输入内容保持默认即可。
npm init
- 执行以下命令,安装 Express 包。
npm install express --save
- 在项目目录下创建 index.js 文件,并输入以下内容。
const express = require('express') const app = express() app.get('/', (req, res) => res.send('Hello World!')) const port = process.env.TENCENTCLOUD_SERVER_PORT || 8080 console.log('listening port',port) app.listen(port, () => console.log('Example app listening on',port))
- 执行以下命令,进行项目的本地验证。
显示结果如下,则说明服务已启动。node index.js
在浏览器地址栏输入listening port 8080 Example app listening on 8080
localhost:8080
后访问,窗口显示Hello World!
,本地创建项目成功。
创建 Hello World 服务
- 登录 SCF 控制台,选择地域(本文以广州为例)。
- 选择左侧导航栏【函数服务】,单击【新建】。如下图所示:
- 在“新建函数”页面,填写函数基础信息,单击【下一步】。如下图所示:
- 函数类型:选择 “服务”。
- 函数名称:填写 helloexpress。
- 运行环境:选择 “Nodejs8.9”。
说明:
HTTP 类型的函数提供 URL 直接访问,适合 Web 服务场景。
- 在“新建函数”页面,填写函数配置信息,单击【完成】。如下图所示:
- 描述:根据需求填写(可选)。
- 执行方法:默认为 index.js。
- 提交方法:选择“本地上传zip包”,在弹出窗口选择已在本地创建的 helloexpress 目录压缩包。
说明:
服务型函数通过执行入口文件来启动服务。例如您的入口文件是 index.js,那么服务型函数会用
node index.js
命令执行启动。
创建完成后,会展示访问路径。如下图所示:
- 单击访问路径,浏览器窗口显示
Hello World!
,则表示 helloexpress 应用部署成功。
您可以单击【运行日志】和【监控信息】来查看日志和监控。
Koa Hello World 示例
- 根据实际需求,选择目录路径,并在该路径下创建新的目录,用作于项目目录。
例如,创建一个名称为 helloexpress 的项目目录。 - 进入 helloexpress 目录,并在该目录下执行以下命令,初始化 node 项目。
说明:
执行命令后,输入内容保持默认即可。
npm init
- 执行以下命令,安装 Koa 包。
npm install koa --save
- 在项目目录下创建文件 index.js,并输入以下内容
const koa = require('koa') const app = new koa() app.use(async ctx => { ctx.body = 'Hello World'; }); const port = process.env.TENCENTCLOUD_SERVER_PORT || 8080 console.log('listening port',port) app.listen(port, () => console.log('Example app listening on',port))
- 执行以下命令,进行项目的本地验证。
显示结果如下,则说明服务已启动。node index.js
在浏览器地址栏输入listening port 8080 Example app listening on 8080
localhost:8080
后访问,窗口显示Hello World!
,本地创建项目成功。 - 创建服务步骤同 创建 Hello World 服务。
Egg Hello World 示例
- 根据实际需求,选择目录路径,并在该路径下创建新的目录,用作于项目目录。
例如,创建一个名称为 helloegg 的项目目录。 - 进入 helloegg 目录,并在该目录下依次执行以下命令,使用脚手架初始化一个 egg 项目。
Egg 的 production 环境通过npm init egg --type=simple npm install
egg-scripts start
来启动服务,在启动时默认支持了 cluster+agent 模式,所以需要针对 egg 做一些改造。
服务型函数平台会自动根据访问量做扩缩和负载。用户不需要考虑多线程运行的情况,不需要处理 cluster 运行的模式,也不需要考虑多服务器负载。 - 在项目目录下创建 index.js 文件,并输入以下内容。
require('egg').startCluster({ baseDir: __dirname, mode: 'single', port: process.env.TENCENTCLOUD_SERVER_PORT || 8080, env: 'production' })
- 执行以下命令,进行项目的本地验证。
显示结果如下,则说明服务已启动。node index.js
在浏览器地址栏输入listening port 8080 Example app listening on 8080
localhost:8080
后访问,窗口显示hi egg!
,本地创建项目成功。 - 创建服务步骤同 创建 Hello World 服务。