服务型函数

最近更新时间:2019-09-10 17:34:34

操作场景

本文旨在通过 Express、Koa 和 Egg 的 Hello World 示例介绍服务型函数(HTTP Service)使用方法,帮助您了解服务型函数的基本使用流程和 SCF 控制台的基本操作。例如创建服务、上传代码、测试访问和查看运行日志和监控。

您可以结合示例步骤进行项目开发,服务创建及访问验证。本文示例步骤如下:

  1. 使用 Node.js Web 框架(例如 Express、Koa、Egg)完成项目开发。
  2. 创建服务,并上传打包后的项目代码。
  3. 访问服务提供的域名,验证服务的运行情况。

前提条件

  • 已安装 Node.js
  • 已开通服务型函数功能。
    服务型函数目前为内测发布功能,可通过 内测申请 获取此功能。

操作步骤

Express Hello World 示例

创建 Nodejs Express 项目

  1. 根据实际需求,选择目录路径,并在该路径下创建新的目录,用作于项目目录。
    例如,创建一个名称为 helloexpress 的项目目录。
  2. 进入 helloexpress 目录,并在该目录下执行以下命令,初始化 node 项目。
    说明:

    执行命令后,输入内容保持默认即可。

    npm init
  3. 执行以下命令,安装 Express 包。
    npm install express --save
  4. 在项目目录下创建 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))
  5. 执行以下命令,进行项目的本地验证。
    node index.js
    显示结果如下,则说明服务已启动。
    listening port 8080
    Example app listening on 8080
    在浏览器地址栏输入 localhost:8080 后访问,窗口显示 Hello World!,本地创建项目成功。

创建 Hello World 服务

  1. 登录 SCF 控制台,选择地域(本文以广州为例)。
  2. 选择左侧导航栏【函数服务】,单击【新建】。如下图所示:
  3. 在“新建函数”页面,填写函数基础信息,单击【下一步】。如下图所示:
    • 函数类型:选择 “服务”。
    • 函数名称:填写 helloexpress。
    • 运行环境:选择 “Nodejs8.9”。
      说明:

      HTTP 类型的函数提供 URL 直接访问,适合 Web 服务场景。

  4. 在“新建函数”页面,填写函数配置信息,单击【完成】。如下图所示:
    • 描述:根据需求填写(可选)。
    • 入口文件:默认为 index.js。
    • 提交方法:选择“本地上传文件夹”,在弹出窗口选择已在本地创建的 helloexpress 目录。
      说明:

      服务型函数通过执行入口文件来启动服务。例如您的入口文件是 index.js,那么服务型函数会用 node index.js 命令执行启动。


      创建完成后,会展示访问路径。如下图所示:
  5. 单击访问路径,浏览器窗口显示 Hello World!,则表示 helloexpress 应用部署成功。
    您可以单击【运行日志】和【监控信息】来查看日志和监控。

Koa Hello World 示例

  1. 根据实际需求,选择目录路径,并在该路径下创建新的目录,用作于项目目录。
    例如,创建一个名称为 helloexpress 的项目目录。
  2. 进入 helloexpress 目录,并在该目录下执行以下命令,初始化 node 项目。
    说明:

    执行命令后,输入内容保持默认即可。

    npm init
  3. 执行以下命令,安装 Koa 包。
    npm install koa --save
  4. 在项目目录下创建文件 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))
  5. 执行以下命令,进行项目的本地验证。
    node index.js
    显示结果如下,则说明服务已启动。
    listening port 8080
    Example app listening on 8080
    在浏览器地址栏输入 localhost:8080 后访问,窗口显示 Hello World!,本地创建项目成功。
  6. 创建服务步骤同 创建 Hello World 服务

Egg Hello World 示例

  1. 根据实际需求,选择目录路径,并在该路径下创建新的目录,用作于项目目录。
    例如,创建一个名称为 helloegg 的项目目录。
  2. 进入 helloegg 目录,并在该目录下依次执行以下命令,使用脚手架初始化一个 egg 项目。
    npm init egg --type=simple
    npm install
    Egg 的 production 环境通过 egg-scripts start 来启动服务,在启动时默认支持了 cluster+agent 模式,所以需要针对 egg 做一些改造。
    服务型函数平台会自动根据访问量做扩缩和负载。用户不需要考虑多线程运行的情况,不需要处理 cluster 运行的模式,也不需要考虑多服务器负载。
  3. 在项目目录下创建 index.js 文件,并输入以下内容。
    require('egg').startCluster({
    baseDir: __dirname,
    mode: 'single',
    port: process.env.TENCENTCLOUD_SERVER_PORT || 8080,
    env: 'production'
    })
  4. 执行以下命令,进行项目的本地验证。
    node index.js
    显示结果如下,则说明服务已启动。
    listening port 8080
    Example app listening on 8080
    在浏览器地址栏输入 localhost:8080 后访问,窗口显示 hi egg!,本地创建项目成功。
  5. 创建服务步骤同 创建 Hello World 服务