Serverless 应用中心 多函数 multi-scf 组件

腾讯云 SCF 云函数组件通过使用 Serverless Cloud Framework ,基于云上 Serverless 服务(云函数及触发器等),支持同时部署多个云函数,该组件支持丰富的配置扩展,提供了目前最易用、低成本并且弹性伸缩的多个云函数的开发、配置及部署能力。

相关产品
Serverless 应用中心 产品页,含版本规格、价格与购买入口。

一、创建

·方式1:参考 快速创建应用模板,选择 SCF 项目模板进行创建。

·方式2:直接使用scf init命令创建。例如,快速创建 Node.js 示例:

scf init multi-scf-nodejs

注意:说明:

注意:目前 multi-scf 组件支持的 helloworld 模板有:multi-scf-golang、multi-scf-php、multi-scf-python,只需要将命令中的 multi-scf-nodejs 更换为前面列出的模板名称,即可快速初始化相应语言模板。

二、部署

执行cd multi-scf-nodejs进入项目目录,执行scf deploy命令,将会弹出二维码,直接扫码授权进行部署。

三、查看

执行scf info命令,查看你部署的项目信息。

四、移除

执行scf remove命令,移除你已经部署的项目。

注意:使用 remove 命令后,将删除已部署的应用,同时删除对应的函数,且无法恢复,请谨慎使用此命令。

五、全部配置

# serverless.yml#应用组织信息app: '' # 应用名称。留空则默认取当前组件的实例名称为app名称。stage: '' # 环境名称。默认值是 dev。建议使用${env.STAGE}变量定义环境名称#组件信息component: multi-scfname: multi-scfdemo#组件参数配置inputs: # 需要多个函数同时生效的配置参数放到这里 src: src: ./ # 指定当前需要上传的包含工作流配置文件的目录 exclude: – .env region: ap-shanghai # 云函数所在区域 namespace: default type: event # 函数类型,默认为 event(事件类型),web(web类型) memorySize: 128 # 内存大小,单位MB timeout: 20 # 函数执行超时时间,单位秒 initTimeout: 3 # 初始化超时时间,单位秒 publicAccess: true # 是否开启公网访问 installDependency: false # 是否在线安装依赖 vpcConfig: # 私有网络配置 vpcId: vpc-xxx # 私有网络的Id subnetId: subnet-xxx # 子网ID cfs: # cfs配置 – cfsId: cfs-xxx # cfs ID mountInsId: cfs-xxx # mout ID localMountDir: /mnt/ # 本地挂载路径 remoteMountDir: / # 远程挂载路径 deadLetter: # 死信队列配置 type: deadLetterType name: deadLetterName filterType: deadLetterFilterType layers: #layer配置 – name: scfLayer # layer名称 version: 1 # 版本 cls: # 函数日志 logsetId: 3010c83a-f46d-45a8-94ba-d1567e8ca2f2 topicId: 9bedc538-3f03-4cc4-9eb3-376533d6db12 eip: true # 是否开启固定IP,true: 开启, false: 不开启,默认不开启 asyncRunEnable: true # 是否启用异步执行(长时间运行) traceEnable: true # 是否状态追踪 msgTTL: 21600 # 消息保留时间,单位秒 retryNum: 2 # 重试次数 dnsCache: true # 是否开启dns缓存,true: 开启, false: 不开启,默认不开启 overClockConfig: # 请求缓冲队列 timeOut: 15 # 最大缓冲时间,单位秒,范围 1-15秒 publish: false # 部署的同时是否发布新版本,true:发布;false:不发布 aliasName: $DEFAULT #别名及流量灰度配置,需发布或使用的函数别名 aliasDescription: 'cli create alisa description' #别名描述,非必填 aliasFunctionVersion: $LATEST # 别名下配置的版本1 additionalVersionWeights: #别名下配置的版本2及权重,自动为版本1分配剩余权重 – version: 1 weight: 0.4 publishDescription: 'cli publish version' # 版本描述 environments: # 环境变量 – key: NODE_ENV value: development tags: # 标签配置 – key: slstest value: slstest functions: index: # 仅仅需要某个函数生效的配置参数放到这里 handler: index.index type: event # 函数类型,默认为 event(事件类型),web(web类型) runtime: Nodejs24.11 instanceConcurrencyConfig: # 单实例多并发配置,仅web函数支持开启 enable: true #是否开启 dynamicEnabled: false #是否开启智能动态并发,true: 动态并发,false:表示静态并发 maxConcurrency: 1 #最大并发数,dynamicEnabled是false时,可进行设置 protocolType: 'WS' #当前支持 WebSockets 协议,值为 WS,只有 type:web 时此配置生效。 protocolParams: wsParams: idleTimeOut: 60 #空闲超时时间, 单位秒,默认15s。可配置范围1-1800s # 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 hello: # 仅仅需要某个函数生效的配置参数放到这里 handler: index.hello type: event # 函数类型,默认为 event(事件类型),web(web类型) memorySize: 256 timeout: 10 runtime: Nodejs22.21 triggers: # 触发器 – type: clb # clb触发器 function: index parameters: loadBalanceId: string domain: string protocol: string port: string url: string weight: string – type: timer # 定时触发器 function: index parameters: name: timer1 qualifier: $DEFAULT # 别名配置 cronExpression: '*/5 * * * * * *' # 每5秒触发一次 enable: true argument: argument # 额外的参数 – type: http #函数URL function: index parameters: netConfig: enableIntranet: true enableExtranet: true qualifier: $DEFAULT authType: NONE – type: mqtt # mqtt触发器 function: index # 函数名 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" – type: cos #cos触发器 function: index parameters: qualifier: $DEFAULT # 别名配置 bucket: cli-appid.cos.ap-beijing.myqcloud.com filter: prefix: filterdir/ suffix: .jpg events: 'cos:ObjectCreated:*' enable: true – type: cmq # CMQ Topic 触发器 function: index parameters: qualifier: $DEFAULT # 别名配置 name: test-topic-queue enable: true filterType: 1 # 消息过滤类型,1为标签类型,2为路由匹配类型 filterKey: # 当 filterType 为1时表示消息过滤标签,当 filterType 为2时表示 Binding Key – key1 – key2 – type: ckafka # ckafka触发器 function: index parameters: name: ckafka-xxx-xxx qualifier: $DEFAULT instanceId: ckafka-xxx topic: testxxx maxMsgNum: 999 retry: 10000 offset: latest timeout: 60 consumerGroupName: ckafkaxxx #消费组名称,不传时将自动创建新消费组 easConfig: userName: ckafka-xxxx password: "******" enable: true – type: cls # cls 触发器 function: index parameters: qualifier: '$DEFAULT' # 别名配置 topicId: 'xxx-228b-42f5-aab5-7f740cc2fb11' # 日志主题 ID maxWait: 60 # 最长等待时间,单位秒 enable: true – type: mps function: index parameters: qualifier: $DEFAULT # 别名配置 type: EditMediaTask # 事件类型 enable: true – type: apacheKafka # 自定义触发器 function: index 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

六、配置描述

各项配置的具体描述,请参见 云函数 SCF 组件配置描述,以确保格式保持一致。

赞 (0)
上一篇 4天前
下一篇 4天前