三、前提条件
·已经安装 Serverless Cloud Framework 。详情请参见 安装 Serverless Cloud Framework。
·账号开通 Serverless 相关权限。详情请参见 账号和权限配置。
五、创建
·方式1:按照 快速部署 操作,选择 SCF 项目模板进行创建。
·方式2:直接使用 scf init 命令创建。快速创建一个 Node.js 的 SCF 示例:
scf init scf-nodejs
注意:说明:
注意:目前 SCF 组件支持的 helloworld 模板有:scf-golang、scf-php、scf-python,只需要将命令中的 scf-nodejs 更换为前面列出的模板名称,即可快速初始化相应语言模板。
六、部署
执行以下命令,将会弹出二维码,直接扫码授权进行部署:
scf deploy
注意:说明:
注意:如果鉴权失败,请参见 权限配置 进行授权。
七、查看
执行以下命令,查看你部署的项目信息:
scf info
八、移除
执行以下命令,移除你已经部署的项目:
注意:警告:
注意:使用 remove 命令后,将删除已部署的应用,同时删除对应的函数,且无法恢复,请谨慎使用此命令。
scf remove
十、serverless.yml
执行 scf deploy 时,根据 serverless.yml 文件中的配置对云函数资源进行创建或更新。一份简单的 serverless.yml 文件如下:
注意:说明:
注意:配置详情请参见 全量配置文档。
#scf组件配置样例#组件信息component: scf # (必填) 引用 component 的名称,当前用到的是 tencent-scf 组件name: scfdemo # (必填) 创建的实例名称,请修改成你的实例名称#组件参数inputs: name: ${name}-${stage}-${app} #函数名称 src: ./ #代码路径 handler: index.main_handler #入口 runtime: Nodejs10.15 # 云函数运行时的环境 region: ap-guangzhou # 云函数所在区域 events: # 触发器 – apigw: # 网关触发器 parameters: endpoints: – path: / method: GET
如你使用的是函数 URL,请将events修改为:
events: – http: parameters: netConfig: enableIntranet: true enableExtranet: true qualifier: $DEFAULT authType: NONE
serverless.yml 文件包含的信息:
十一、组件信息
| 组件名 | 是否必选 | 说明 |
| component | 必填 | component 的名称,使用scf registry命令查询你可以引入的组件。 |
| name | 必填 | 创建的实例名称,每个组件在部署时将创建一个实例。 |
十二、参数信息
inputs 下的参数为组件配置参数。一个简单的 SCF 组件参数配置包含以下内容:
| 参数名 | 说明 |
| name | 云函数名称。由于云函数名称又是资源 ID,为了保证资源的唯一性,建议采用 ${name}-${stage}-${app} 变量方式。 |
| src | 代码路径。 |
| handler | 函数处理方法名称。 |
| runtime | 云函数运行环境,目前支持: Python2.7、Python3.6、Nodejs6.10、Nodejs8.9、Nodejs10.15、Nodejs12.16、PHP5、PHP7、Go1、Java8 和 CustomRuntime。 |
| region | 云函数所在的区域。 |
| events | 触发器。支持的触发器为:timer、apigw(即将下线)、cos、cmq、ckafka。 |
十三、账号权限
部署实例时需要账号授权去操作具体的云资源,目前可以通过两种方式进行授权:扫码授权和密钥授权。
·扫码授权:能快速进行授权部署,但生成的凭证是临时凭证,过期后需要重新扫码。
·密钥授权:能够获得永久授权,需要预先配置账号的 SecretId 和 SecretKey 。
配置详情请参见 权限配置。
十四、开发调试
在 serverless.yml文件所在的目录下运行 scf dev 可以实时输出云端日志,每次部署完毕后,对项目进行访问,即可在命令行中实时输出调用日志,便于查看业务情况和排障。Node.js 支持开启开发调试能力,将会对本地代码的改动进行检测和自动上传。详情请参见 开发与调试。
十五、应用管理
Serverless 部署一个组件实例实质是部署了一个单组件实例的应用。在应用项目开发过程中,一个应用下可能会存在多个组件实例,关于管理组件实例进行应用项目开发的说明,详情请参见 应用管理。
十六、组件命令
云函数组件提供了组件级的命令。对于scf deploy命令部署成功的云函数,可以通过以下命令操作云函数。
注意:说明:
注意:命令必须在 serverless.yml 同目录下执行。
十七、函数发布版本
将函数 my-function 云端的 $LATEST 版本发布为一个固定版本:
scf deploy –inputs publish=true function=my-function
十八、函数新增版本
将函数 my-function 云端的 $LATEST 版本新增一个版本名为 Version1 的函数版本:
scf deploy –inputs publish=true qualifier=Version1 function=my-function
十九、触发函数
云端调用 functionName 函数,并传递 JSON 参数{"weights":{"2":0.1}}:
scf invoke –inputs function=functionName clientContext='{"weights":{"2":0.1}}'
21、全部配置
# serverless.yml#应用组织信息app: '' # 应用名称。留空则默认取当前组件的实例名称为app名称。stage: '' # 环境名称。默认值是 dev。建议使用${env.STAGE}变量定义环境名称#组件信息component: scf # (必选) 组件名称,在该实例中为scfname: 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 存储桶名称 # object: '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 instanceConcurrencyConfig: # 单实例多并发配置,仅web函数支持开启 enable: true #是否开启 dynamicEnabled: false #是否开启智能动态并发,true: 动态并发,false:表示静态并发 maxConcurrency: 1 #最大并发数,dynamicEnabled是false时,可进行设置 aliasName: $DEFAULT #别名及流量灰度配置,需发布或使用的函数别名 aliasDescription: 'cli create alisa description' #别名描述,非必填 aliasFunctionVersion: $LATEST # 别名下配置的版本1 additionalVersionWeights: #别名下配置的版本2及权重,自动为版本1分配剩余权重 – version: 12 weight: 0.4 publish: false #部署的同时是否发布新版本,true:发布;false:不发布 publishDescription: 'cli publish version' #版本描述 protocolType: 'WS' #当前支持 WebSockets 协议,值为 WS,只有 type:web 时此配置生效。 protocolParams: wsParams: idleTimeOut: 60 #空闲超时时间, 单位秒,默认15s。可配置范围1-1800s 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 dnsCache: false # 是否开启dns缓存,true: 开启, false: 不开启,默认不开启 overClockConfig: # 请求缓冲队列 timeOut: 0 # 最大缓冲时间,单位秒,范围 1-15秒 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 # 容器启动参数 containerImageAccelerate: true # 是否开启镜像加速 imagePort: 9000 #-1表示 job镜像, 9000 表示webServer镜像。不传或为空时,默认取9000 events: # 触发器 – clb: parameters: loadBalanceId: string domain: string protocol: string port: string url: string weight: string – timer: # 定时触发器 parameters: name: timer # 触发器名称,默认timer-${name}-${stage},在YAML中指定不同的timer name,可创建多个定时触发器 qualifier: $DEFAULT # 别名配置 cronExpression: '*/5 * * * * * *' # 每5秒触发一次 enable: true argument: argument # 额外的参数 – http:#函数URL parameters: netConfig: enableIntranet: true enableExtranet: true qualifier: $DEFAULT authType: NONE – mqtt: # 函数URL parameters: enable: true # 是否开启mqtt触发器 qualifier: $DEFAULT # 函数别名/版本 name: test-xx # 触发器名称 timeout: 60 # 超时时间 MaxMsgNum: 40 # 最大消息数 RetryNum: 1 # 重试次数 InstanceId: "mqtt-xxx" # 实例id topicFilters: '#' # 订阅主题过滤器, 支持多个用逗号分隔配置多个过滤器,如:#,+ userName: "xxxx" # 用户名 password: "xxxx" # 密码 encodeType: "Base64StdEncoding" # 编码类型,传空字符串,则不开启编码 userProperties: "$where": "where $Qos = 1 AND K1 = v1 OR K2 = v2" – 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: name: ckafka-xxx-xxx qualifier: $DEFAULT instanceId: ckafka-xxx topic: testxxx maxMsgNum: 1 retry: 1 offset: latest timeout: 55 enable: true consumerGroupName: ckafkaxxx #消费组名称,不传时将自动创建新消费组 easConfig: userName: ckafka-xxxx password: "******" – 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 – apacheKafka: parameters: name: xxx-apache-kafka-xxx #触发器名称 enable: true topicName: testxxx #要订阅的主题 bootstrapServers: – x.xxx.92.106:9006 #需连接消费的自建 Apache Kafka 实例地址,支持IP+端口或域名+端口 offset: latest maxMsgNum: 1 timeout: 1 consumerGroupName: testxx #消费组名称 retry: 10 easConfig: #配置Apache Kafka 实例允许消费的账号密码信息及安全协议、身份验证机制 username: xxx password: xxx securityProtocol: SASL_PLAINTEXT mechanism: PLAIN
22、配置描述
主要的参数如下,详情请参见 创建函数。
| 参数名称 | 必选 | 类型 | 默认值 | 描述 |
| src | 是 | Src | – | 函数代码路径。 |
| type | 否 | string | event | 函数类型,支持:event、web。 |
| name | 否 | string | – | 创建的函数名称。云函数名称,字段字符需满足只能包含字母、数字、下划线、连字符,以字母开头,以数字或字母结尾,2-60个字符。 |
| 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 三类环境)。目前仅支持 Nodejs6.10,Nodejs8.9,Nodejs10.15,Nodejs12.16,Nodejs14.18,Nodejs16.13,Python2.7,Python3.6,Python3.7,PHP5,PHP7,Go1,Java8,Java11 和 CustomRuntime。使用 CustomRuntime 部署详情请参见 CustomRuntime。 |
| region | 否 | string | ap-guangzhou | 云函数所在区域。详情请参见产品支持的 地域列表。 |
| description | 否 | string | – | 函数描述,最大支持1000个英文字母、数字、空格、逗号、换行符和英文句号,支持中文。 |
| memorySize | 否 | number | 128 | 函数运行时内存大小,可选范围64、128MB-3072MB,并且以128MB 为阶梯。 |
| timeout | 否 | number | 3 | 函数最长执行时间,单位为秒,可选值范围1-900秒。 |
| initTimeout | 否 | number | 3 | 函数初始化超时时间,单位为秒,可选值范围3-300秒。 |
| 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小时,如果配置为 true,cls(函数日志配置) 必选。此参数只有在函数创建时才有效。 |
| traceEnable | 否 | boolean | false | 是否启用状态追踪,如果要配置为 true,必须配置 asyncRunEnable 同时为 true。 |
| msgTTL | 否 | number | 21600 | 异步执行消息保留时间,单位秒,仅 asyncRunEnable 为 true 时有效。 |
| retryNum | 否 | number | 2 | 重试次数,仅 asyncRunEnable 为 true 时有效。 |
| installDependency | 否 | boolean | false | 是否自动在线安装依赖。 |
| tags | 否 | – | – | 标签设置。可设置多对 key-value 的键值对。 |
| cfs | 否 | Cfs[] | – | 文件系统挂载配置,用于云函数挂载文件系统。 |
| ignoreTriggers | 否 | boolean | false | 是否忽略触发器,如果设置为 true,events 参数将不起作用,组件将只更新函数配置和代码。 |
| events | 否 | Event[] | – | 触发器配置。 |
| image | 否 | Image | – | 镜像配置。 |
| protocolType | 否 | string | – | HTTP 函数支持的访问协议。当前支持 WebSockets 协议,值为 WS,只有 type:web 时此配置生效。 |
| protocolParams | 否 | ProtocolParams | – | HTTP 函数配置 ProtocolType 访问协议,当前协议可配置的参数,主要是配置空闲超时时间。 |
| provisionedNum | 否 | number | – | 预置并发数量。需注意所有版本的预置并发数总和存在上限限制。当前的上限是函数最大并发配额为100。 |
| qualifier | 否 | number | – | 函数的版本号,请注意:$LATEST 版本不支持预置并发。 |
23、Src
代码目录。
| 参数名称 | 必选 | 类型 | 默认值 | 描述 |
| src | 是 | string | – | 代码路径。与 object 不能同时存在。 |
| exclude | 否 | string[] | – | 不包含的文件或路径,遵守 glob 语法。 |
| bucket | 否 | string | – | 存储桶名称,配置前需确认桶是否存在。 |
| object | 否 | string | – | 部署的代码在存储桶中的路径。 |
注意:如果配置了 src,表示部署 src 参数指定目录的代码并压缩成 zip 后上传到对应的存储桶中;如果配置了 object,表示获取对应存储桶中 object 对应的代码进行部署。
24、Environment
环境变量。
| 参数名称 | 类型 | 描述 |
| variables | Array of Variable | 环境变量参数,包含多对 key-value 的键值对。 |
25、VPC
私有网络。
| 参数名称 | 必选 | 类型 | 描述 |
| vpcId | 否 | string | 私有网络的 ID |
| subnetId | 否 | string | 子网的 ID |
26、DeadLetter
死信队列。
| 名称 | 必选 | 类型 | 描述 |
| Type | 是 | string | 死信队列模式 |
| Name | 是 | string | 死信队列名称 |
| FilterType | 否 | string | 死信队列主题模式的标签形式 |
27、Layer
层配置。
| 参数名称 | 必选 | 类型 | 描述 |
| name | 是 | string | 层名称 |
| version | 是 | number | 层版本号 |
28、CLS
函数日志。
| 参数名称 | 必选 | 类型 | 描述 |
| logsetId | 否 | string | 日志集 ID |
| topicId | 否 | string | 日志主题 ID |
29、CFS
文件系统,使用文件系统必须配置 私有网络,并保证 CFS 文件系统与云函数在同一个私有网络下。
| 参数名称 | 必选 | 类型 | 描述 |
| cfsId | 是 | String | 文件系统实例 ID |
| mountInsId | 是 | String | 文件系统挂载点 ID |
| localMountDir | 是 | String | 本地挂载点 |
| remoteMountDir | 是 | String | 远程挂载点 |
30、Event
注意:触发器部署逻辑说明
注意:当通过 CLI 部署触发器时,如果本地配置文件 (YAML) 与云端的函数配置存在配置项差异,并且该触发器的类型不支持更新操作,系统将采取以下强制操作:
注意:1. 自动删除现有的云端触发器。
注意:2. 根据本地 YAML 配置文件重新创建一个新的触发器。
注意:请注意:
注意:不支持更新的触发器类型包括:CLS 触发器(日志服务)、CLB 触发器(负载均衡)、COS 触发器(对象存储)、CMQ 触发器(消息队列)。
注意:请仔细评估此操作(删除旧触发器)影响,避免影响业务使用。
触发器,触发器配置为数组,按照配置的 name 和 param 创建触发器。支持以下触发器:
| 触发器类型 | 描述 |
| timer | 定时触发器 |
| cos | COS 触发器 |
| cmq | CMQ 主题订阅触发器 |
| ckafka | CKafka 触发器 |
| apacheKafka | ApacheKafka 触发器 |
| cls | CLS 触发器 |
| clb | CLB 触发器 |
| http | 函数 URL |
| 参数名称 | 必选 | 类型 | 默认值 | 描述 |
| parameters | 是 | object | – | 根据触发器类型,参考触发器参数表。 |
| name | 否 | string | 触发器类型-${name}-${stage}-${app} | 触发器名称。 |
详情请参见 触发器配置描述。
31、定时触发器
详情请参见 定时触发器说明。
| 参数名称 | 必选 | 类型 | 默认值 | 描述 |
| name | 否 | string | timer-${name}-${stage} | 触发器名称,可自定义不同的定时触发器名称,创建多个定时触发器。 |
| qualifier | 否 | string | $DEFAULT | 触发版本,默认为 $DEFAULT,即默认流量。 |
| cronExpression | 是 | string | – | 触发时间,为 Cron 表达式。 |
| argument | 否 | object | – | 附加信息参数。 |
| enable | 否 | boolean | false | 触发器是否启用。 |
32、COS 触发器
详情请参见 COS 触发器说明。
| 参数名称 | 必选 | 类型 | 默认值 | 描述 |
| qualifier | 否 | string | $DEFAULT | 触发版本,默认为 $DEFAULT,即默认流量。 |
| bucket | 是 | string | – | 配置的 COS Bucket,仅支持选择同地域下的 COS 存储桶。 |
| filter | 是 | CosFilter | – | COS 文件名的过滤规则。 |
| events | 是 | string | – | 详情请参见 COS 的事件类型。 |
| enable | 否 | boolean | false | 触发器是否启用。 |
33、CMQ 触发器
注意:说明:
注意:添加 CMQ 触发器,需要给 SLS_QcsRole 添加 QcloudCMQFullAccess 策略。
| 参数名称 | 必选 | 类型 | 默认值 | 描述 |
| qualifier | 否 | string | $DEFAULT | 触发版本,默认为 $DEFAULT,即默认流量。 |
| name | 是 | string | – | CMQ Topic 主题队列名称。 |
| filterType | 否 | number | – | 消息过滤类型,1为标签类型,2为路由匹配类型。 |
| filterKey | 否 | string[] | – | 当 filterType 为1时表示消息过滤标签,当 filterType 为2时表示 Binding Key。 |
| enable | 否 | boolean | false | 触发器是否启用。 |
34、CKafka 触发器
注意:说明:
注意:添加 CKafka 触发器,需要给 SLS_QcsRole 添加 QcloudCKafkaFullAccess 策略。
| 参数名称 | 必选 | 类型 | 默认值 | 描述 |
| qualifier | 否 | string | $DEFAULT | 触发版本,默认为 $DEFAULT,即默认流量。 |
| name | 是 | string | – | 触发器名称 |
| instanceId | 是 | string | – | 配置连接的 CKafka 实例,仅支持选择同地域下的实例。 |
| topic | 是 | string | – | 支持在 CKafka 实例中已经创建的 Topic。 |
| maxMsgNum | 是 | number | 100 | 5秒内每汇聚 maxMsgNum 条 CKafka 消息,则触发一次函数调用。 |
| offset | 是 | string | latest | offset 为开始消费 CKafka 消息的位置。 |
| retry | 是 | number | 10000 | 重试次数,函数调用失败时的最大重试次数。 |
| timeout | 是 | number | 60 | 单次触发的最长等待时间,最大60秒。 |
| enable | 否 | boolean | false | 触发器是否启用。 |
| consumerGroupName | 否 | string | – | 消费组名称,支持输入已存在的存量消费组,不传时默认新建消费组。如使用已存在的消费组,为保证消费连续性,避免数据丢失或重复消费,请确认 CKafka 侧该消费组位置已设置为“从最新位置开始消费”。 |
| easConfig | 否 | object | – | 加密访问配置(适用于配置了 ACL 策略的实例)。 |
| easConfig.userName | 否 | string | – | 加密访问用户名。 |
| easConfig.password | 否 | string | – | 加密访问密码。 |
35、Apache Kafka 触发器
| 参数名称 | 必选 | 类型 | 默认值 | 描述 |
| qualifier | 否 | string | $DEFAULT | 触发版本,默认为 $DEFAULT,即默认流量。 |
| name | 是 | string | – | 触发器名称。 |
| bootstrapServers | 是 | array | – | Kafka 实例地址列表,支持配置多个地址,格式:IP:端口或域名:端口。 |
| topic | 是 | string | – | 已创建的 Apache Kafka 实例的 Topic 名称。 |
| maxMsgNum | 是 | number | 100 | 单次拉取并批量投递给云函数的最大消息数量,最高支持 10000 条。 |
| timeout | 是 | number | 60 | 单次触发的最长等待时间,最大60秒。 |
| offset | 是 | string | latest | 开始消费消息的位置,当前支持从最新位置开始消费。 |
| retry | 是 | number | 10000 | 重试次数,函数调用失败时的最大重试次数。 |
| enable | 否 | boolean | false | 触发器是否启用。 |
| consumerGroupName | 否 | string | – | 消费组名称,支持输入已存在的存量消费组,不传时默认新建消费组。如使用已存在的消费组,为保证消费连续性,避免数据丢失或重复消费,请确认 Ckafka 侧该消费组位置已设置为“从最新位置开始消费”。 |
| easConfig | 否 | object | – | 加密访问配置(适用于配置了 ACL 策略的实例)。 |
| easConfig.userName | 否 | string | – | 加密访问用户名。 |
| easConfig.password | 否 | string | – | 加密访问密码。 |
| easConfig.securityProtocol | 否 | string | – | 安全协议,可选值:PLAINTEXT、SASL_SSL、SASL_PLAINTEXT。 |
| easConfig.mechanism | 否 | string | – | 身份验证机制,可选值:PLAIN、SCRAM-SHA-256、SCRAM-SHA-512。 |
36、MQTT 触发器
注意:说明:
注意:添加 MQTT 触发器,需要给 scf_QcsRole 添加 QcloudMQTTReadOnlyAccess、QcloudAccessForSCFRoleInMQTT 策略。
| 参数名称 | 必选 | 类型 | 默认值 | 描述 |
| name | 是 | string | – | 触发器名称,最大60个字符,支持 a-z、A-Z、0-9、- 和 _,必须以字母开头。 |
| enable | 是 | boolean | false | 触发器是否启用。 |
| qualifier | 否 | string | $DEFAULT | 触发版本/函数别名,默认为 $DEFAULT。 |
| InstanceId | 是 | string | – | MQTT 实例 ID,仅支持选择同地域下的实例。 |
| topicFilters | 是 | string | – | 订阅主题过滤器,支持使用 +(单级)和 #(多级)通配符,多个过滤器用逗号分隔。 |
| userName | 是 | string | – | 访问 MQTT 实例的用户名,需在 MQTT 实例 ACL 策略中具备访问权限。 |
| password | 是 | string | – | 访问 MQTT 实例的密码。 |
| MaxMsgNum | 否 | number | 1 | 单次拉取并批量投递给云函数的最大消息条数,最高支持 10000 条。 |
| timeout | 是 | number | 60 | 单次触发的最长累积等待时间。 |
| RetryNum | 否 | number | 3 | 重试次数,函数调用失败时的最大重试次数。 |
| encodeType | 否 | string | – | 编码类型,设置为 Base64StdEncoding 开启 Base64 编码,传空字符串则不开启。 |
| userProperties | 否 | object | – | 消息属性过滤配置。 |
| userProperties.$where | 否 | string | – | 自定义 WHERE 语句进行消息过滤,如 where $Qos = 1 AND K1 = v1。 |
37、CLS 触发器
注意:说明:
注意:添加 CLS 触发器,需要给 SLS_QcsRole 添加 QcloudCLSFullAccess 策略。
| 参数名称 | 必选 | 类型 | 默认值 | 描述 |
| qualifier | 否 | string | $DEFAULT | 触发版本,默认为 $DEFAULT,即默认流量。 |
| topicId | 是 | string | – | CLS 日志主题 ID。 |
| maxWait | 否 | number | 60 | 最长等待时间,单位秒。 |
| enable | 否 | boolean | false | 触发器是否启用。 |
38、MPS 触发器
注意:说明:
注意:添加 MPS 触发器,需要给 SLS_QcsRole 添加 QcloudMPSFullAccess 策略。
| 参数名称 | 必选 | 类型 | 默认值 | 描述 |
| qualifier | 否 | string | $DEFAULT | 触发版本,默认为 $DEFAULT,即默认流量。 |
| type | 是 | string | – | 事件类型。WorkflowTask:工作流任务EditMediaTask:视频编辑任务 |
| enable | 否 | boolean | false | 触发器是否启用。 |
39、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
40、ProtocolParams
详情请参见 创建函数,HTTP 函数支持其他访问协议的参数:
| 参数名称 | 必选 | 类型 | 描述 |
| wsParams | 否 | WSParams | WebSocket 协议支持的参数。 |
41、WSParams
HTTP 函数通过 WebSocket 协议访问时的参数:
| 参数名称 | 必选 | 类型 | 描述 |
| idleTimeOut | 否 | int | 空闲超时时间,单位秒,默认 15s。可配置范围 1~1800s。 |