Skip to content

Latest commit

 

History

History
551 lines (452 loc) · 35.7 KB

docs.md

File metadata and controls

551 lines (452 loc) · 35.7 KB

配置文档

全部配置

# serverless.yml

#应用组织信息
app: '' # 应用名称。留空则默认取当前组件的实例名称为app名称。
stage: '' # 环境名称。默认值是 dev。建议使用${env.STAGE}变量定义环境名称

#组件信息
component: scf # (必选) 组件名称,在该实例中为scf
name: scfdemo # (必选) 组件实例名称。

#组件参数配置
inputs:
  name: scfdemo # 云函数名称,默认为 ${name}-${stage}-${app}
  namespace: default
  role: exRole # 云函数执行角色
  # 1. 默认写法,新建特定命名的 cos bucket 并上传
  src: ./src
  # 2. src 为对象,并且制定忽略上传文件夹 node_modules
  # src:
  #   src: ./code
  #   exclude:
  #     - 'node_modules/**'
  # 3. 指定 bucket name 和文件的方式,直接上传 cos 中的文件部署云函数
  # src:
  #    bucket: tinatest   # bucket name 存储桶名称
  #    key: 'code.zip'      # bucket key 指定存储桶内的文件
  # 4. 指定本地文件到 bucket
  # src:
  #   bucket: tinatest   # bucket name
  #   src:         # 指定本地路径
  type: event # 函数类型,默认为 event(事件类型),web(web类型)
  handler: index.main_handler #入口(函数类型为事件类型时生效)
  entryFile: app.js #入口文件名(代码中无scf_bootstrap文件,且函数类型为web类型时生效)
  runtime: Nodejs10.15 # 运行环境 默认 Nodejs10.15
  region: ap-guangzhou # 函数所在区域
  description: This is a function in ${app} application.
  memorySize: 128 # 内存大小,单位MB
  timeout: 20 # 函数执行超时时间,单位秒
  initTimeout: 3 # 初始化超时时间,单位秒
  environment: #  环境变量
    variables: #  环境变量对象
      TEST: value
  publicAccess: true # 是否开启公网访问
  installDependency: false # 是否在线安装依赖
  vpcConfig: # 私有网络配置
    vpcId: vpc-xxx # 私有网络的Id
    subnetId: subnet-xxx # 子网ID
  cfs: # cfs配置
    - cfsId: cfs-123
      mountInsId: cfs-123
      localMountDir: /mnt/
      remoteMountDir: /
  deadLetter: # 死信队列配置
    type: deadLetterType
    name: deadLetterName
    filterType: deadLetterFilterType
  layers: #layer配置
    - name: scfLayer #  layer名称
      version: 1 #  版本
  cls: # 函数日志
    logsetId: ClsLogsetId
    topicId: ClsTopicId
  eip: false # 是否开启固定IP
  asyncRunEnable: false # 是否启用异步执行(长时间运行)
  traceEnable: false # 是否状态追踪
  msgTTL: 21600 # 消息保留时间,单位秒
  retryNum: 2 # 重试次数
  tags: #标签配置
    key1: value1
    key2: value2 # tags 的key value
  ignoreTriggers: false # 是否忽略触发器部署
  image: # 镜像配置
    registryId: tcr-xxx # 容器镜像服务名称,企业版必须
    imageType: personal # 镜像类型:personal - 个人,enterprise - 企业版,public - 镜像模板
    imageUrl: ccr.ccs.tencentyun.com/sls-scf/nodejs_test:latest@sha256:xxx
    command: node index.js # 容器启动命名
    args: test # 容器启动参数
  events: # 触发器
    - timer: # 定时触发器
        parameters:
          # name: timer # 触发器名称,默认timer-${name}-${stage}
          qualifier: $DEFAULT # 别名配置
          cronExpression: '*/5 * * * * * *' # 每5秒触发一次
          enable: true
          argument: argument # 额外的参数
    - apigw: # api网关触发器,已有apigw服务,配置触发器
        parameters:
          serviceName: serverless
          serviceId: service-8dsikiq6
          protocols:
            - http
          netTypes:
            - OUTER
          description: the serverless service
          environment: release
          endpoints:
            - path: /users
              method: POST
            - path: /test/{abc}/{cde}
              apiId: api-id
              apiName: index
              method: GET
              description: Serverless REST API
              enableCORS: true
              responseType: HTML
              serviceTimeout: 10
              isBase64Encoded: false
              isBase64Trigger: false
              base64EncodedTriggerRules:
                - name: Accept
                  value:
                    - image/jpeg
                - name: Content_Type
                  value:
                    - image/jpeg
              param:
                - name: abc
                  position: PATH
                  required: true
                  type: string
                  defaultValue: abc
                  desc: mytest
                - name: cde
                  position: PATH
                  required: true
                  type: string
                  defaultValue: abc
                  desc: mytest
              function:
                isIntegratedResponse: true
                functionQualifier: $DEFAULT
              usagePlan:
                usagePlanId: 1111
                usagePlanName: slscmp
                usagePlanDesc: sls create
                maxRequestNum: 1000
              auth:
                secretName: secret
                secretIds:
                  - xxx
    - cos: # cos触发器
        parameters:
          qualifier: $DEFAULT # 别名配置
          bucket: cli-appid.cos.ap-beijing.myqcloud.com
          filter:
            prefix: filterdir/
            suffix: .jpg
          events: 'cos:ObjectCreated:*'
          enable: true
    - cmq: # CMQ Topic 触发器
        parameters:
          qualifier: $DEFAULT # 别名配置
          name: test-topic-queue
          enable: true
          filterType: 1 # 消息过滤类型,1为标签类型,2为路由匹配类型
          filterKey: # 当 filterType 为1时表示消息过滤标签,当 filterType 为2时表示 Binding Key
            - key1
            - key2
    - ckafka: # ckafka触发器
        parameters:
          qualifier: $DEFAULT # 别名配置
          name: ckafka-xxx
          topic: test
          maxMsgNum: 999
          retry: 10000
          offset: latest
          timeout: 60
          enable: true
    - cls: # cls 触发器
        parameters:
          qualifier: '$DEFAULT' # 别名配置
          topicId: 'xxx-228b-42f5-aab5-7f740cc2fb11' # 日志主题 ID
          maxWait: 60 # 最长等待时间,单位秒
          enable: true
    - mps: # mps 触发器
        parameters:
          qualifier: '$DEFAULT' # 别名配置
          type: EditMediaTask # 事件类型
          enable: true

配置描述

主要的参数

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

参数名称 必选 类型 默认值 描述
src Src 函数代码路径。
type string event 函数类型,支持:event、web
name string 创建的函数名称
namespace string default 函数命名空间
handler string index.main_handler 函数处理方法名称,执行方法表明了调用云函数时需要从哪个文件中的哪个函数开始执行(函数类型为 web 时生效)
entryFile string 函数入口文件名,默认根据运行环境指定默认文件名。Nodejs 为 app.js,Python 环境为 app.py,php 环境为 hello.php(函数类型为 web 时生效)
role string 云函数绑定的运行角色。
runtime string Nodejs10.15 函数运行环境 (web 函数目前仅支持 Nodejs、Python、Php 三类环境)
region string ap-guangzhou 云函数所在区域。详见产品支持的 地域列表
description string 函数描述,最大支持 1000 个英文字母、数字、空格、逗号、换行符和英文句号,支持中文
memorySize number 128 函数运行时内存大小,可选范围 64、128MB-3072MB,并且以 128MB 为阶梯
timeout number 3 函数最长执行时间,单位为秒,可选值范围 1-900 秒
initTimeout number 3 函数初始化超时时间,单位为秒,可选值范围 1-30 秒 秒
eip boolean false 是否固定出口 IP
publicAccess number true 是否开启公网访问
environment Environment 函数的环境变量,配置参考环境变量
vpcConfig Vpc 函数的私有网络配置,配置参数参考私有网络
layers Layer[] 云函数绑定的 layer, 配置参数参考层配置
deadLetter DeadLetter 死信队列配置,配置参数参考死信队列
cls Cls 函数日志配置,配置参数参考函数日志
eip boolean false 固定出口 IP。默认为 false,即不启用。
asyncRunEnable boolean false 是否启用异步执行(长时间运行),默认最大支持 12小时,如果配置为 truecls(函数日志配置) 必须。此参数只有在函数创建时才有效
traceEnable boolean false 是否启用状态追踪,如果要配置为 true,必须配置 asyncRunEnable 同时为 true
msgTTL number 21600 异步执行消息保留时间,单位秒,仅 asyncRunEnabletrue 时有效
retryNum number 2 重试次数,仅 asyncRunEnabletrue 时有效
installDependency boolean false 是否自动在线安装依赖
tags 标签设置。可设置多对 key-value 的键值对
cfs Cfs 文件系统挂载配置,用于云函数挂载文件系统。配置参数参考文件系统
ignoreTriggers boolean false 是否忽略触发器,如果设置为 trueevents 参数将不起作用,组件将至更新函数配置和代码
events Event[] 触发器配置
image Image 镜像配置

重要字段说明

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

Src

代码目录

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

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

Environment

环境变量

参数名称 类型 描述
variables Array of Variable 环境变量参数,包含多对 key-value 的键值对

Vpc

私有网络

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

DeadLetter

死信队列

名称 必选 类型 描述
Type string 死信队列模式
Name string 死信队列名称
FilterType string 死信队列主题模式的标签形式

Layer

层配置

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

Cls

函数日志

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

Cfs

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

参数名称 必选 类型 描述
cfsId String 文件系统实例 id
mountInsId String 文件系统挂载点 id
localMountDir String 本地挂载点
remoteMountDir String 远程挂载点

Event

触发器,触发器配置为数组,按照配置的 name 和 param 创建触发器。

支持以下触发器:

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

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

参数名称 必选 类型 默认值 描述
parameters object 根据触发器类型,参考以下触发器参数表。
name string 触发器类型-${name}-${stage}-${app} 触发器名称。

参考 官方触发器配置描述

定时触发器

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

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

COS 触发器

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

参数名称 必选 类型 默认值 描述
qualifier string $DEFAULT 触发版本,默认为 $DEFAULT,即 默认流量
bucket string 配置的 COS Bucket,仅支持选择同地域下的 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
serviceId string 网关 Service ID(不传入则新建一个 Service)
instanceId string 网关实例 ID,填写则使用独享型实例创建 API 网关,否则创建共享型实例(该项只能在创建时指定,创建后无法修改)
protocols string[] ['http'] 前端请求的类型,如 http,https,http 与 https
netTypes string[] ['OUTER'] 网络类型,如 ['OUTER'], ['INNER']['OUTER', 'INNER']
serviceName string 网关 API 名称。如果不传递则默认新建一个名称与触发器名称相同的 Apigw API 名称。
description string 网关 API 描述
endpoints 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 密钥配置
authType string NONE NONEAPP
app App API 绑定 �APP 配置
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
APP

API 绑定 APP 配置

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

参数名称 必选 类型 描述
name string 用户自定义 APP 名称
id string APP ID
description string 用户自定义 APP 描述
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

Image

镜像相关配置:

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

注意:

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

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