Skip to content

Latest commit

 

History

History
523 lines (417 loc) · 32 KB

configure.md

File metadata and controls

523 lines (417 loc) · 32 KB

配置文档

全部配置

# serverless.yml

app: multi-scf
stage: dev
name: demo
component: multi-scf

inputs:
  src:
    src: ./ # 指定当前需要上传的包含工作流配置文件的目录
    exclude:
      - .env
  region: ap-guangzhou # 云函数所在区域
  runtime: Nodejs12.16
  namespace: default
  memorySize: 128
  type: event # 函数类型
  timeout: 3
  isAutoPublish: false # 是否每次部署时,自动发布函数版本
  publishDescription: Created By Serverless CLI # 自动发布版本的描述
  environments:
    - key: NODE_ENV
      value: development
  tags:
    - key: slstest
      value: slstest
  functions:
    index:
      handler: app.index
    userList:
      handler: app.userList
      memorySize: 256
      timeout: 10
    user-detail:
      type: web
      nodeType: CPU # 资源类型, 可选GPU/CPU
      nodeSpec: "" # 资源配置, nodeType为GPU需配置
      image: # 镜像配置
        registryId: tcr-xxx # 容器镜像服务实例 ID,企业版必须
        imageUrl: abc.com:latest@sha256:xxx # 镜像版本 URL
        imageType: personal # 镜像类型
        command: node index.js # 容器启动命名
        args: test # 容器启动参数
  triggers:
    - type: timer
      function: index
      parameters:
        name: timer1
        cronExpression: '*/5 * * * * * *' # 每5秒触发一次
        enable: true
        argument: argument # 额外的参数
    - type: cos
      function: index
      parameters:
        bucket: bucket-name
        filter:
          prefix: filterdir/
          suffix: .jpg
        events: 'cos:ObjectCreated:*'
        enable: true
    - type: apigw
      parameters:
        serviceName: serverless
        protocols:
          - https
          - http
        id: service-xxx # 如果不配置,会自动创建
        apis:
          - path: /
            method: GET
            function: index
          - path: /{uid}
            method: POST
            function: userList
            param:
              - name: uid
                position: PATH
                required: true
                type: string
                defaultValue: 0
                desc: user id
    - type: cmq
      function: index
      parameters:
        name: test-topic-queue
        enable: true
        filterType: 1
        filterKey:
          - key1
          - key2
    - type: ckafka
      function: index
      parameters:
        name: ckafka-xxx
        topic: test
        maxMsgNum: 999
        retry: 10000
        offset: latest
        timeout: 60
        enable: true
    - type: cls
      function: index
      parameters:
        topicId: 'xxx-228b-42f5-aab5-7f740cc2fb11' # 日志主题 ID
        maxWait: 60 # 最长等待时间,单位秒
        enable: true
    - type: mps
      function: index
      parameters:
        type: EditMediaTask # 事件类型
        enable: true

inputs 配置参数

主要的参数

参数名称 必选 类型 默认值 描述
src Src 指定当前需要上传的包含工作流配置文件的目录
region string ap-guangzhou 工作流所在区域
runtime string Nodejs12.16 运行环境
memorySize number 128 运行内存
timeout number 3 超时时间
functions FunctionObject[] '' 函数配置
triggers Trigger[] '' 触发器配置
ignoreTriggers boolean false 是否忽略触发器,如果设置为 truetriggers 参数将不起作用
isAutoPublish boolean false 是否自动发布函数版本
publishDescription string Created by Serverless 发布版本描述

Src

项目代码配置

参数名称 是否必选 类型 默认值 描述
src string 上传代码目录
exclude string[] 不包含的文件或路径, 遵守 glob 语法

FunctionObject

functions:
  index: # 唯一 Key
    handler: app.index
    # ...
  userList: # 唯一 Key
    handler: app.userList
    # ...

部署后的函数名称默认会基于配置的唯一 Key,进行规范化拼接,规则为:``${name}-${stage}-${app}-${Key},比如下面配置生成的函数名称为demo-dev-multi-scf-index`:

app: multi-scf
stage: dev
name: demo
component: multi-scf
functions:
  index:
    handler: app.index

如果想要自定义函数名称,直接配置name 属性就好,比如:

functions:
  index: # 唯一 Key
    name: indexFunc
    handler: app.index

函数配置为应用中唯一 Key 作为属性,然后 Key 属性值为 Function 对象,

Function 对象支持配置属性如下:

参数名称 必选 类型 默认值 描述
handler string 处理方法名称
type string event 函数类型,支持:event、web
nodeType string CPU 资源类型,支持:GPU、CPU,当nodeType=GPU时,必须指定image镜像配置
nodeSpec string GPU资源配置,支持:计算型GN7(GN7.LARGE20,GN7.2XLARGE40,GN7.5XLARGE80),渲染型GN7vw(GN7vw.LARGE16,GN7vw.2XLARGE32,GN7vw.2XLARGE32,GN7vw.4XLARGE64)
name string 函数名称
src string 代码目录,相对于 Src 指定目录
role string 运行角色。
description string 描述
memorySize number 128 运行内存,单位 MB,范围 64、128-3072,以 128 为阶梯
timeout number 3 超时时间,单位为秒,可选值范围 1-900 秒
environments Environment[] 环境变量
vpc Vpc 私有网络配置
layers Layer[]
cls Cls CLS 日志配置
tags Tag[] 标签设置
cfs Cfs[] 文件系统挂载配置,用于云函数挂载文件系统。
publicAccess number true 是否开启公网访问
eip boolean false 固定出口 IP。默认为 false,即不启用。
asyncRunEnable boolean false 是否启用异步执行,默认最大支持 12小时,配置为 true 时,cls 配置必须。此参数只有在函数创建时才有效
traceEnable boolean false 是否启用状态追踪,如果要配置为 true,必须配置 asyncRunEnabletrue
installDependency boolean false 是否自动在线安装依赖
eip boolean false 是否固定出口 IP
image Image 镜像配置
msgTTL number 21600 消息保留时间,单位
retryNum number 2 重试次数

重要字段说明

  • name - 云函数名称,字段字符需满足 只能包含字母、数字、下划线、连字符,以字母开头,以数字或字母结尾,2~60个字符
  • runtime - 目前仅支持: Nodejs6.10,Nodejs8.9,Nodejs10.15,Nodejs12.16,Nodejs14.18,Nodejs16.13,Python2.7,Python3.6,Python3.7,PHP5,PHP7,PHP7.4,PHP8.0,Go1,Java8,Java11 和 CustomRuntime,使用 CustomRuntime 部署参考 CustomRuntime

Src

代码目录

参数名称 必选 类型 默认值 描述
src string 代码路径。与 object 不能同时存在。
exclude string[] 不包含的文件或路径, 遵守 glob 语法
bucket string 存储桶名称
object string 部署的代码在存储桶中的路径。

注意:如果配置了 src,表示部署 src 参数指定目录的代码并压缩成 zip 后上传到对应的存储桶中;如果配置了 object,表示获取对应存储桶中 object 对应的代码进行部署

Environment

环境变量

参数名称 必须 类型 描述
key string
value string

Tag

标签

参数名称 必须 类型 描述
key string
value string

Vpc

私有网络

参数名称 必选 类型 描述
vpcId string 私有网络 的 Id
subnetId string 子网的 Id

Layer

层配置

参数名称 必选 类型 描述
name string 层名称
version number 层版本号

Cls

函数日志

参数名称 必选 类型 描述
logsetId string 日志集 ID
topicId string 日志主题 ID

Cfs

文件系统,使用文件系统必须配置私有网络,并保证 cfs 文件系统与云函数在同一个私有网络下。

参数名称 必选 类型 描述
cfsId string 文件系统实例 id
mountInsId string 文件系统挂载点 id
localMountDir string 本地挂载点,云函数目录
remoteMountDir string 远程挂载点,CFS 目录

Image

镜像相关配置:

参数名称 必选 类型 默认值 描述
imageUrl string 镜像版本 URL
imageType string personal 镜像类型,支持:personal、enterprise、public
registryId string [容器镜像服务][tcr] 实例 ID,使用企业版镜像时必须
command string 容器启动命令,默认使用镜像中的 Entrypoint 或者 CMD
args string 容器启动参数,默认使用惊醒中的 CMD

注意:

imageUrl 拼接格式为 <仓库地址>:<镜像版本>@<镜像ID(sha256)>,如下:

ccr.ccs.tencentyun.com/sls-scf/nodejs_test:latest@sha256:xxx

Trigger

触发器,触发器配置为数组

支持以下触发器:

timer - 定时触发器
apigw - API 网关触发器
cos - COS 触发器
cmq - CMQ 主题订阅触发器
ckafka - CKafka 触发器
cls - CLS 触发器
mps - MPS 触发器

注意:对于 API 网关触发器,如果没有配置 网关服务 ID (serviceId),则自动创建一个 API 网关服务,对于其他触发器仅执行配置触发器,不涉及服务资源创建。

参考 官方触发器配置描述

参数名称 必选 类型 默认值 描述
function string 触发器关联函数
parameters object 根据触发器类型,参考以下触发器参数表。

注意:function 值为 FunctionObject 的唯一 Key

定时触发器

参考: https://cloud.tencent.com/document/product/583/9708

参数名称 必选 类型 默认值 描述
name string 触发器名称
cronExpression string 触发时间,为 Cron表达式
qualifier string $DEFAULT 触发版本,默认为 $DEFAULT,即 默认流量
argument object 入参参数。
enable boolean false 触发器是否启用

COS 触发器

参考: https://cloud.tencent.com/document/product/583/9707

参数名称 必选 类型 默认值 描述
qualifier string $DEFAULT 触发版本,默认为 $DEFAULT,即 默认流量
bucket string 配置对应COS存储桶适用于XML API的访问域名,仅支持选择同地域下的 COS 存储桶
filter CosFilter COS 文件名的过滤规则
events string COS 的事件类型
enable boolean false 触发器是否启用

CMQ 触发器

参数名称 必选 类型 默认值 描述
qualifier string $DEFAULT 触发版本,默认为 $DEFAULT,即 默认流量
name string CMQ Topic 主题队列名称
filterType number 消息过滤类型,1 为标签类型,2 为路由匹配类型
filterKey string[] 当 filterType 为 1 时表示消息过滤标签,当 filterType 为 2 时表示 Binding Key
enable boolean false 触发器是否启用

注意:添加 CMQ 触发器,需要给 SLS_QcsRole 添加 QcloudCMQFullAccess 策略。

Ckafka 触发器

参数名称 必选 类型 默认值 描述
qualifier string $DEFAULT 触发版本,默认为 $DEFAULT,即 默认流量
name string 配置连接的 CKafka 实例,仅支持选择同地域下的实例。
topic string 支持在 CKafka 实例中已经创建的 Topic。
maxMsgNum number 100 5 秒内每汇聚 maxMsgNum 条 Ckafka 消息,则触发一次函数调用
offset string latest offset 为开始消费 Ckafka 消息的位置,目前只能填写 latest
retry number 10000 重试次数,函数调用失败时的最大重试次数。
timeout number 60 单次触发的最长等待时间,最大 60 秒
enable boolean false 触发器是否启用

注意:添加 CKafka 触发器,需要给 SLS_QcsRole 添加 QcloudCKafkaFullAccess 策略。

API 网关触发器

参数名称 必选 类型 默认值 描述
environment string release 发布的环境,填写 releasetestprepub,不填写默认为release
id string 网关 Service ID(不传入则新建一个 Service)
protocols string[] ['http'] 前端请求的类型,如 http,https,http 与 https
netTypes string[] ['OUTER'] 网络类型,如 ['OUTER'], ['INNER']['OUTER', 'INNER']
serviceName string 网关 API 名称。如果不传递则默认新建一个名称与触发器名称相同的 Apigw API 名称。
description string 网关 API 描述
apis object[] 参考 endpoint 参数。

注意:如果配置多个 API 网关触发器,需要配置不同的 serviceName

endpoints 参数

参考: https://cloud.tencent.com/document/product/628/14886

参数名称 必选 类型 默认值 描述
path string API 的前端路径,如/path。
method string API 的前端请求方法,如 GET
apiId string API ID。如果不传递则根据 path 和 method 创建一个,传递了直接忽略 path 和 method 参数。
apiName string API 名称
description string API 描述
enableCORS boolean false 是否需要开启跨域
responseType string 自定义响应配置返回类型,现在只支持 HTML、JSON、TEST、BINARY、XML(此配置仅用于生成 API 文档提示调用者)。
serviceTimeout number 15 API 的后端服务超时时间,单位是秒。
param Parameter 前端参数
function Function SCF 配置
usagePlan UsagePlan 使用计划
auth Auth API 密钥配置
isBase64Encoded boolean false 是否开启 Base64 编码,只有后端为 scf 时才会生效
isBase64Trigger boolean false 是否开启 Base64 编码的 header 触发,只有后端为 scf 时才会生效
base64EncodedTriggerRules Base64Rule[] [] Header 触发 Base64 编码规则,总规则数不能超过 10,只有 isBase64Trigger 设置为 true 才有效
Parameter

前端参数

参数名称 必选 类型 默认值 描述
name string API 的前端参数名称。
position string API 的前端参数位置。当前仅支持 PATH、QUERY、HEADER
required boolean API 的前端参数是否必填,true:表示必填,false:表示可选。
type string API 的前端参数类型,如 string、Int 等。
defaultValue string API 的前端参数默认值。
desc string API 的前端参数备注。
Function

SCF 配置

参数名称 必选 类型 默认值 描述
isIntegratedResponse boolean false 是否启用 SCF 集成响应。
functionQualifier string $DEFAULT 触发器关联的 SCF 版本 。
UsagePlan

使用计划

参考: https://cloud.tencent.com/document/product/628/14947

参数名称 必选 类型 描述
usagePlanId string 用户自定义使用计划 ID
usagePlanName string 用户自定义的使用计划名称
usagePlanDesc string 用户自定义的使用计划描述
maxRequestNum number 请求配额总数,如果为空,将使用-1 作为默认值,表示不开启
Auth

API 密钥配置

参考: https://cloud.tencent.com/document/product/628/14916

参数名称 类型 描述
secretName string 密钥名称
secretIds string 密钥 ID
Base64Rule

Header 触发 Base64 编码规则,总规则数不能超过 10,只有 isBase64Trigger 设置为 true 才有效

参考: https://tcloud-dev.oa.com/document/product/628/16924?!preview&preview_docmenu=1&lang=cn&!document=1#Base64EncodedTriggerRule

参数名称 类型 描述
name string 进行编码触发的 header,可选值 "Accept"和"Content_Type" 对应实际数据流请求 header 中的 Accept 和 Content-Type
value string[] 进行编码触发的 header 的可选值数组, 数组元素的字符串最大长度为 40,元素可以包括数字,英文字母以及特殊字符,特殊字符的可选值为: . + * - / _

例如 value 可以配置为:

value:
  - application/zip

CLS 触发器

参数名称 必选 类型 默认值 描述
qualifier string $DEFAULT 触发版本,默认为 $DEFAULT,即 默认流量
topicId string CLS 日志主题 ID
maxWait number 60 最长等待时间,单位秒
enable boolean false 触发器是否启用

注意:添加 CLS 触发器,需要给 SLS_QcsRole 添加 QcloudCLSFullAccess 策略。

MPS 触发器

参数名称 必选 类型 默认值 描述
qualifier string $DEFAULT 触发版本,默认为 $DEFAULT,即 默认流量
type string 事件类型。WorkflowTask - 工作流任务EditMediaTask - 视频编辑任务
enable boolean false 触发器是否启用

注意:添加 MPS 触发器,需要给 SLS_QcsRole 添加 QcloudMPSFullAccess 策略。

关于 API 网关 Base64 编码

注意:开启 API 网关 Base64 编码的后端必须是 云函数

如果需要开启 API 网关 Base64 编码,必须配置 isBase64Encodedtrue,此时每次请求的请求内容都会被 Base64 编码后再传递给云函数。如果想要部分请求 Base64 编码,可以通过配置 isBase64Triggertrue,配置 base64EncodedTriggerRules Header 触发规则,此时 API 网关将根据触发规则对请求头进行校验,只有拥有特定 Content-Type 或 Accept 请求头的请求会被 Base64 编码后再传递给云函数,不满足条件的请求将不进行 Base64 编码,直接传递给云函数。 官方介绍文档:https://cloud.tencent.com/document/product/628/51799