You need to enable JavaScript to run this app.
文档中心
函数服务

函数服务

复制全文
下载 pdf
Serverless Devs
Serverless Devs 快速入门
复制全文
下载 pdf
Serverless Devs 快速入门
本文主要介绍基于 Serverless Devs 的函数服务(veFaaS)基本使用流程。​
功能简介​
Serverless Devs 是一个开源的 Serverless 开发者平台,致力于为开发者提供强大的工具链体系。通过该平台,开发者不仅可以一键体验多云 Serverless 产品,极速部署 Serverless 项目,还可以在 Serverless 应用全生命周期进行项目的管理,并且非常简单快速的将 Serverless Devs 与其他工具/平台进行结合,进一步提升研发、运维效能。更多信息,请参见 Serverless Devs 开源文档。​
准备工作​
步骤一:工具安装​
  1. 安装 14.14.0 以上版本的 Node.js 与 npm 包管理工具。详情请参见 Node.js 官网。​
  1. 安装 Serverless Devs 开发者工具。​
  • ​
    ➜ npm install @serverless-devs/s -g​
    ​
  1. 通过s --version命令判断工具是否安装成功。预期返回结果如下所示:​
  • ​
    ➜ s --version​
    @serverless-devs/s: 3.0.7, s-home: /root/.s, linux-x64, node-v16.13.1​
    ​
步骤二:配置火山引擎密钥​
已完成账号注册和认证,并按照如下步骤配置火山引擎密钥。账号注册和认证的操作详情参见 账号注册流程、个人认证、企业认证 。​
  1. 登录 火山引擎 IAM 控制台,获取密钥信息。​
说明​
火山引擎密钥(Access Key 和 Secret Access Key)是您访问火山引擎 API 的密钥,具有该账户完全的权限,请您务必妥善保管!不要通过任何方式(例如 Github)将 Access Key 公开到外部渠道,以避免被他人利用而造成 安全威胁。强烈建议您使用子账户 Access Key 来进行 API 调用。详情请参见 API 访问密钥管理 。​
  1. 将密钥配置到 Serverless Devs。下文以通过s config add命令直接添加密钥为例,更多配置方法,请参见 Config 密钥配置。​
  • ​
    ➜ s config add # 配置密钥​
    ​
    ? Please select a provider: (Use arrow keys)​
    ❯ Alibaba Cloud (alibaba)​
    Volcengine (volcengine)​
    AWS (aws)​
    Azure (azure)​
    Baidu Cloud (baidu)​
    Google Cloud (google)​
    Huawei Cloud (huawei)​
    (Move up and down to reveal more choices)​
    ​
注意​
Provider 请选择Volcengine (volcengine)。​
  1. 选择Volcengine (volcengine)后,系统会进行交互式引导。您可根据系统提示输入火山引擎密钥(AK/SK)和配置文件名称(Alias)。​
说明​
可自定义配置 Alias 名称,也可以直接按 Enter 键,使用系统为您配置的名称。本示例中以自定义名称volcano-demo为例。​
  • ​
    ➜ Projects s config add​
    ? Please select a provider: Volcengine (volcengine)​
    🧭 Refer to the document for Volcengine key: https://www.volcengine.com/docs/6291/65568​
    ? AccessKey: ak​
    ? SecretKey: sk​
    ? Please create alias for key pair. If not, please enter to skip volcano-demo​
    Alias: volcano-demo​
    Credential:​
    __provider: Volcengine​
    AccessKey: ******​
    SecretKey: ******​
    ​
步骤三:初始化函数示例​
  1. 通过s init命令创建一个 Node.js 语言的 Hello World 项目。在系统交互式引导过程中,可能会出现填写项目名称以及选择密钥的过程,按如下说明处理:​
  • 项目模版:选择volcano-webserver-node14。​
  • 密钥:选择本文上方 步骤二 中创建的volcano-demo。​
  • ​
    ➜ s init volcano-webserver-node14​
    ​
    🚀 More applications: https://registry.serverless-devs.com​
    ? Please input your project name (init dir) volcano-webserver-node14​
    ​
    Downloading[/v3/packages/volcano-webserver-node14/zipball/1.0.0]...​
    Download demo successfully​
    ​
    创建应用所在的地区​
    ? 地域 cn-shanghai​
    函数名称,请输入 4 ~ 64 个字符,只能包含字母、数字、下划线和中划线​
    ? 函数名称 webserver-node14-jhd5​
    网关实例 ID​
    ? 网关实例 ID gatewaymock​
    ? please select credential alias volcano-demo​
    ​
  1. 接下来,可以通过cd等命令进入项目(例如:cd webserver-node14-jhd5)。​
部署函数​
在当前项目下(本示例中为 Node.js 语言的 Hello World 项目),使用s deploy命令实现函数的一键部署,其中函数的名称(name)、运行时(runtime)、内存、镜像等信息都在s.yaml文件中定义。​
​
➜ volcano-webserver-node14 s deploy​
​
⌛ Steps for [deploy] of [volcano-webserver-node14]​
====================​
[2024-04-02 12:31:48][INFO][framework] 获取函数详情成功​
[2024-04-02 12:31:48][INFO][framework] 开始创建函数​
[2024-04-02 12:31:50][INFO][framework] 创建函数成功​
[2024-04-02 12:31:50][INFO][framework] 获取函数详情成功​
[2024-04-02 12:31:50][INFO][framework] 创建发布工单中...​
[2024-04-02 12:31:52][INFO][framework] 创建发布工单成功​
[2024-04-02 12:31:52][INFO][framework] 检查发布状态中...​
[2024-04-02 12:31:56][INFO][framework] 函数发布成功​
[2024-04-02 12:31:56][WARN][framework] Triggers - 目前函数仅支持绑定一个 APIG​
[2024-04-02 12:31:56][INFO][framework] 获取触发器列表成功​
[2024-04-02 12:31:56][INFO][framework] 创建触发器中...​
[2024-04-02 12:31:56][INFO][framework] 创建触发器中... GatewayService 开始创建​
[2024-04-02 12:31:56][INFO][framework] 创建触发器中... GatewayService 创建成功​
[2024-04-02 12:31:56][INFO][framework] 创建触发器中... Upstream 开始创建​
[2024-04-02 12:31:57][INFO][framework] 创建触发器中... Upstream 创建成功​
[2024-04-02 12:31:57][INFO][framework] 创建触发器中... Route 开始创建​
[2024-04-02 12:31:58][INFO][framework] 创建触发器中... Route 创建成功​
[2024-04-02 12:31:58][INFO][framework] 触发器创建成功​
✔ [framework] completed (10.23s)​
​
获取远端函数信息​
在当前项目下(本示例中为 Node.js 语言的 Hello World 项目),使用s info命令获取函数的远端详情。​
​
➜ volcano-webserver-node14 s info​
⌛ Steps for [info] of [volcano-webserver-node14]​
====================​
[2024-04-02 12:37:54][INFO][framework] 获取函数详情成功​
[2024-04-02 12:37:54][WARN][framework] Triggers - 目前函数仅支持绑定一个 APIG​
[2024-04-02 12:37:54][INFO][framework] 获取触发器列表成功​
✔ [framework] completed (0.39s)​
​
🚀 Result for [info] of [volcano-webserver-node14]​
====================​
function:​
Id: cfvpy01d​
Name: webserver-node14-dmfx​
Description: 此函数由 volcano-webserver-node14 应用创建​
Runtime: node14/v1​
ExclusiveMode: false​
RequestTimeout: 30​
MaxConcurrency: 100​
MemoryMB: 512​
CodeSizeLimit: 0​
SourceType: tos​
VpcConfig:​
EnableVpc: false​
CreationTime: 2024-04-02 04:31:50.104 +0000 UTC​
LastUpdateTime: 2024-04-02 04:31:51.282 +0000 UTC​
TlsConfig:​
EnableLog: false​
Owner: ********​
UseStatus:​
DebugInstanceEnable: false​
InstanceType:​
InitializerSec: 0​
triggers:​
-​
Id:​
Type: apig​
Name: upstream-webserver-node14-dmfx​
Description:​
CreationTime: 2024-04-02 04:31:57.278 +0000 UTC​
LastUpdateTime: 2024-04-02 04:31:57.278 +0000 UTC​
DetailedConfig: {"UpstreamId":"*************","GatewayId":"****************"}​
​
删除函数​
在当前项目下(本示例中为 Node.js 语言的 Hello World 项目),使用s remove命令删除远端函数。​
注意​
删除远端函数不会同步清空本地的函数配置文件,请手动删除。​
​
➜ volcano-webserver-node14 s remove​
​
⌛ Steps for [remove] of [volcano-webserver-node14]​
====================​
? 是否删除应用及其对应资源? yes​
[2024-04-02 12:39:04][INFO][framework] 获取函数详情成功​
[2024-04-02 12:39:04][WARN][framework] Triggers - 目前函数仅支持绑定一个 APIG​
[2024-04-02 12:39:04][INFO][framework] 获取触发器列表成功​
[2024-04-02 12:39:04][INFO][framework] 删除 APIG 触发器中...​
[2024-04-02 12:39:05][INFO][framework] 删除 APIG 触发器成功​
[2024-04-02 12:39:05][INFO][framework] 删除函数中...​
[2024-04-02 12:39:06][INFO][framework] 删除函数成功​
✔ [framework] completed (4.11s)​
​
�� Result for [remove] of [volcano-webserver-node14]​
====================​
​
本地镜像构建​
  1. 本地镜像构建依赖 Docker,请确保已在本地安装 Docker 并启动。详细操作,请参见 Docker 官方文档。​
  1. 本地镜像构建完成后会自动同步至s.yaml配置的镜像仓库(CR)实例,因此构建镜像前请先登录 CR 实例,否则会镜像同步失败。登录 CR 实例操作,请参见 基于 Docker 推送和拉取镜像。​
  1. 在当前项目下(本示例中为 Node.js 语言的 Hello World 项目),使用s build命令构建本地镜像。​
  • ​
    ➜ volcano-webserver-image s build​
    ​
    ⌛ Steps for [build] of [prod-image]​
    ====================​
    ​
    TIPS:​
    ​
    1. Build 操作对 Docker(https://www.docker.com) 有所依赖,请先完成安装并启动 Docker​
    2. 本地镜像构建完成后会自动同步至 s.yaml 配置的 cr 仓库,请先在本地完成 CR 登录(https://www.volcengine.com/docs/6420/68645),否则镜像会同步失败​
    ​
    [+] Building 0.0s (9/9) FINISHED​
    => [internal] load .dockerignore 0.0s​
    => => transferring context: 2B 0.0s​
    => [internal] load build definition from Dockerfile 0.0s​
    => => transferring dockerfile: 351B 0.0s​
    => [internal] load metadata for docker.io/library/golang:latest 0.0s​
    => [1/4] FROM docker.io/library/golang:latest 0.0s​
    => [internal] load build context 0.0s​
    => => transferring context: 87B 0.0s​
    => CACHED [2/4] COPY output/main /opt/application/main 0.0s​
    => CACHED [3/4] COPY run.sh /opt/application/run.sh 0.0s​
    => CACHED [4/4] WORKDIR /opt/application 0.0s​
    => exporting to image 0.0s​
    => => exporting layers 0.0s​
    => => writing image sha256:225*******************************e9b 0.0s​
    => => naming to *****.cr.volces.com/***-test/***-oci:latest 0.0s​
    ​
    [2024-04-15 19:10:02][INFO][framework] [镜像构建] 成功​
    ✔ [framework] completed (0.46s)​
    ​
    🚀 Result for [build] of [prod-image]​
    ====================​
    ​
更多镜像构建方法​
本地镜像构建推荐配合 pre-deploy 使用,pre-deploy 先触发镜像构建和上传,再部署函数。​
下文展示结合 actions 构建一个镜像的方法。通过actions中的pre-deploy进行镜像构建并上传镜像到火山引擎镜像仓库(CR)后,function中Source配置为 CR 镜像对应的 lastest 版本,即可实现镜像的更新与拉取。​
​
resources:​
framework:​
component: volcano-vefaas​
actions:​
pre-deploy:​
- component: volcano-vefaas build​
props:​
common:​
Region: region​
function:​
Name: functionName​
Description: 基于 Web Server 应用模版创建​
ExclusiveMode: false​
RequestTimeout: 30​
Runtime: native/v1​
SourceType: image # 注意,仅 native/v1 + SourceType === 'image' 时支持本地构建镜像​
Source: ***.cr.volces.com/***-test/***devs:latest​
MaxConcurrency: 100​
MemoryMB: 1024​
Processor: cpu​
​
​
最近更新时间:2026.06.04 10:37:36
这个页面对您有帮助吗?
有用
有用
无用
无用