2 Star 1 Fork 1

Serverless Framework / Documentation

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
构建应用.md 3.45 KB
一键复制 编辑 原始数据 按行查看 历史
April 提交于 2020-11-22 03:37 . Add files via upload

初始化项目模版

完成 Serverless Framework 安装后,可以通过以下指令,快速初始化一个示例项目,并在此基础上进行改造开发:

sls init scf-demo

通过该指令,我们在本地快速构建了一个基本的函数应用,目录结构如下:

.
├── serverless.yml  # 配置文件
└── src
   └── index.js # 入口函数

进入该目录,可以在示例模版的基础上进行项目的开发。

sls init 支持快速初始化多个项目模版,请通过 sls registry查看所有支持的项目模版。

构建多组件应用

Serverless Framework 提供了多个基础资源组件,用户可以通过不同组件的结合使用,快速完成云端资源的创建与部署,无需在控制台手动操作。

查看基础组件列表与配置方式

此处以部署一个使用 COS 触发器触发的函数项目为例,教您如何在项目中引入多个组件,并快速完成部署,步骤如下:

  1. 调整项目目录结构,新建 cos 文件夹,并在该目录下完成 COS 组件的配置文件 serverless.yml 的编写,调整后的目录结构:

    .
    ├── src
    │   ├── serverless.yml # 函数配置文件
    │   └── index.js # 入口函数
    ├── cos
    │   └── serverless.yml # 对象存储 COS 桶配置文件
    └── .env # 环境变量文件

    cos 组件的 yml 文件示例如下,全量配置文件可参考 COS 组件全量配置

    app: appDemo
    stage: dev
    
    component: cos
    name: cosdemo
    
    inputs:
      bucket: my-bucket
      region: ap-guangzhou
  2. 修改 SCF 项目的 yml 配置文件,在触发器配置部分按以下语法引用 COS 组件的部署结果:

    app: appDemo
    stage: dev
    
    component: scf
    name: scfdemo
    inputs:
      ...
      events:
       - cos: # cos触发器
            parameters:
              bucket: ${output:${stage}:${app}:cosdemo.bucket}

    注意:同一个项目内部署多个组件实例时,需要保证每个项目的 appstage 参数相同,否则无法成功引用。

  3. 在项目根目录下,执行 sls deploy,即可完成 COS 桶的创建,并将 COS 组件的输出作为 SCF 组件的输入完成触发器的配置。

变量引用说明

serverless.yml 支持多种方式引用变量

  • 顶级参数引用

    inputs 字段里,支持直接引用顶级配置信息,引用语法如下:${org}${app}

  • 环境变量引用

    serverless.yml 中,可以直接通过 ${env} 的方式,直接引用环境变量配置(包含 .env 文件中的环境变量配置,以及手动配置在环境中的变量参数)

    例如,通过${env:REGION},引用环境变量 REGION

  • 引用其它组件输出结果

    如果希望在当前组件配置文件中引用其他组件实例的输出信息,可以通过如下语法进行配置:${output:[app]:[stage]:[instance name].[output]}

示例 yml:

org: xxx
app: demo
component: scf
name: rest-api
stage: dev

inputs:
  name: ${org}-${stage}-${app}-${name} # 命名最终为 "acme-prod-ecommerce-rest-api"
  region: ${env:REGION} # 环境变量中指定的 REGION= 信息
  vpcName: ${output:prod:my-app:vpc.name} # 获取其他组件中的输出信息
  vpcName: ${output:${stage}:${app}:vpc.name} # 上述方式也可以组合使用
1
https://gitee.com/serverless-framework/documentation.git
git@gitee.com:serverless-framework/documentation.git
serverless-framework
documentation
Documentation
main

搜索帮助