前言

通过本组件,您可以简单快速的将腾讯云函数计算项目部署到线上。

使用

最简使用方法

模版拉取:

  1. s init python3-http -p tencent

其中Yaml的默认配置为:

  1. MyFunction:
  2. Component: scf
  3. Provider: tencent
  4. Access: release
  5. Properties:
  6. Region: ap-guangzhou # 函数所在区域
  7. Namespace:
  8. Name: default
  9. Function:
  10. Name: Test
  11. Role: exRole # 云函数执行角色
  12. CodeUri: ./src
  13. Handler: index.main_handler #入口
  14. Runtime: Python3.6 # 运行环境
  15. Description: This is a function in application.
  16. MemorySize: 128 # 内存大小,单位MB
  17. Timeout: 20 # 超时时间,单位秒

完整Yaml示例

  1. MyFunction:
  2. Component: scf
  3. Provider: tencent
  4. Access: release
  5. Properties:
  6. Region: ap-guangzhou # 函数所在区域
  7. Namespace:
  8. Name: default
  9. Function:
  10. Name: Name
  11. Role: exRole # 云函数执行角色
  12. EnableRoleAuth: true # 默认会尝试创建 SCF_QcsRole 角色,如果不需要配置成 false 即可
  13. # 1. 默认写法,新建特定命名的 cos bucket 并上传
  14. CodeUri: ./src
  15. # 2. CodeUri 为对象,并且制定忽略上传文件夹 node_modules
  16. # CodeUri:
  17. # Src: ./code
  18. # Exclude:
  19. # - 'node_modules/**'
  20. # 3. 指定 bucket name 和文件的方式,直接上传 cos 中的文件部署云函数
  21. # CodeUri:
  22. # Bucket: tinatest # bucket name,当前会默认在bucket name后增加 appid 后缀, e.g. bucketname-appid
  23. # Key: 'code.zip' # bucket key 指定存储桶内的文件
  24. # 4. 指定本地文件到 bucket
  25. # CodeUri:
  26. # Bucket: tinatest # bucket name
  27. # Src: # 指定本地路径
  28. Handler: index.main_handler #入口
  29. Runtime: Nodejs10.15 # 运行环境 默认 Nodejs10.15
  30. Description: This is a function in application.
  31. MemorySize: 128 # 内存大小,单位MB
  32. Timeout: 20 # 超时时间,单位秒
  33. Environment: # 环境变量
  34. - Key: key
  35. Value: value
  36. PublicAccess: true # 是否开启公网访问
  37. Vpc: # 私有网络配置
  38. VpcId: '' # 私有网络的Id
  39. SubnetId: '' # 子网ID
  40. Cfs: # cfs配置
  41. - CfsId: cfs-123
  42. MountInsId: cfs-123
  43. LocalMountDir: /mnt/
  44. RemoteMountDir: /
  45. DeadLetter: # 死信队列配置
  46. Type: deadLetterType
  47. Name: deadLetterName
  48. FilterType: deadLetterFilterType
  49. Layers: #layer配置
  50. - Name: scfLayer # layer名称
  51. Version: 1 # 版本
  52. Cls: # 函数日志
  53. LogsetId: ClsLogsetId
  54. TopicId: ClsTopicId
  55. Eip: true/false # 是否开启固定IP
  56. Tags: #标签配置
  57. - Key: key
  58. Value: value
  59. Triggers: # 触发器
  60. - Type: timer # 定时触发器
  61. Name: #触发器名称,默认timer-${name}-${stage}
  62. Parameters:
  63. CronExpression: '*/5 * * * *' # 每5秒触发一次
  64. Enable: true
  65. Argument: argument # 额外的参数
  66. - Type: apigw # api网关触发器,已有apigw服务,配置触发器
  67. Name: #触发器名称,默认apigw-${name}-${stage}
  68. Parameters:
  69. Service:
  70. Name: serverless
  71. Id: service-8dsikiq6
  72. Protocols:
  73. - http
  74. NetTypes:
  75. - OUTER
  76. Description: the serverless service
  77. Environment: release
  78. API:
  79. - Path: /users
  80. Method: POST
  81. - Path: /test/{abc}/{cde}
  82. Id: api-id
  83. Method: GET
  84. Description: Serverless REST API
  85. EnableCORS: TRUE
  86. ResponseType: HTML
  87. ServiceTimeout: 10
  88. Parameters:
  89. - Name: abc
  90. Position: PATH
  91. Required: 'TRUE'
  92. Type: string
  93. DefaultValue: abc
  94. Description: mytest
  95. - Name: cde
  96. Position: PATH
  97. Required: 'TRUE'
  98. Type: string
  99. DefaultValue: abc
  100. Description: mytest
  101. Function:
  102. IsIntegratedResponse: TRUE
  103. FunctionQualifier: $DEFAUlt
  104. UsagePlan:
  105. UsagePlanId: 1111
  106. UsagePlanName: slscmp
  107. UsagePlanDesc: sls create
  108. MaxRequestNum: 1000
  109. Auth:
  110. ServiceTimeout: 15
  111. SecretName: secret
  112. SecretIds:
  113. - xxx
  114. - Type: apigw # api网关触发器,无apigw服务,自动创建服务
  115. Name: #触发器名称,默认apigw-${name}-${stage}
  116. Parameters:
  117. Service:
  118. Name: apigw-xxxx
  119. Protocols:
  120. - http
  121. Description: the serverless service
  122. Environment: release
  123. API:
  124. - path: /users
  125. method: POST
  126. - Type: cos # cos触发器
  127. Name: #触发器名称,默认cos-${name}-${stage}
  128. Parameters:
  129. Bucket: cli-appid.cos.ap-beijing.myqcloud.com
  130. Filter:
  131. Prefix: filterdir/
  132. Suffix: .jpg
  133. Events: 'cos:ObjectCreated:*'
  134. Enable: true
  135. - Type: cmq # CMQ Topic 触发器
  136. Name: #触发器名称,默认cmq-${name}-${stage}
  137. Parameters:
  138. Name: test-topic-queue
  139. Enable: true
  140. FilterType: 1 # 消息过滤类型,1为标签类型,2为路由匹配类型
  141. FilterKey: # 当 filterType 为1时表示消息过滤标签,当 filterType 为2时表示 Binding Key
  142. - key1
  143. - key2
  144. - Type: ckafka # ckafka触发器
  145. Name: #触发器名称,默认ckafka-${name}-${stage}
  146. Parameters:
  147. Name: ckafka-2o10hua5
  148. Topic: test
  149. MaxMsgNum: 999
  150. Offset: latest
  151. Enable: true

详细使用方法

| 参数名 | 必填 | 类型 | 参数描述 | | —- | —- | —- | —- |

| Region | true | Enum | 地域 |

| Namespace | false | Struct | 命名空间 |

| Function | true | Struct | 函数 |

Namespace

| 参数名 | 必填 | 类型 | 参数描述 | | —- | —- | —- | —- |

| Name | false | String | 命名空间 |

Function

| 参数名称 | 是否必选 | 类型 | 默认值 | 描述 | | —- | —- | —- | —- | —- |

| Name | true | String | ${name}-${stage}-${app} | 创建的函数名称。函数名称支持 26 个英文字母大小写、数字、连接符和下划线,第一个字符只能以字母开头,最后一个字符不能为连接符或者下划线,名称长度 2-60。云函数名称又是资源 ID,为了保证资源的唯一性,默认采用 ${name}-${stage}-${app} 变量方式。 |

| Role | false | String | | 云函数绑定的运行角色。 |

| EnableRoleAuth | false | Boolean | true | 默认会尝试创建 SCF_QcsRole 角色。SCF_QcsRole 为 SCF 默认配置角色。该服务角色用于提供 SCF 配置对接其他云上资源的权限,包括但不限于代码文件访问、触发器配置。配置角色的预设策略可支持函数执行的基本操作。如果不需要配置成 false 即可。[相关文档][函数角色与授权] |

| CodeUri | true | Struct | | 函数代码路径。如果是对象,配置参数参考 执行目录 |

| Handler | false | String | Pyton/Php/Nodejs 默认值为 index.main_handler,Java 默认值为 example.Hello::mainHandler,Go 默认值为 main | 函数处理方法名称,名称格式支持 “文件名称.方法名称” 形式,文件名称和函数名称之间以”.”隔开,文件名称和函数名称要求以字母开始和结尾,中间允许插入字母、数字、下划线和连接符,文件名称和函数名字的长度要求是 2-60 个字符。 |

| Runtime | false | String | Nodejs10.15 | 函数运行环境,目前仅支持: Nodejs6.10,Nodejs8.9,Nodejs10.15,Nodejs12.16,Python2.7,Python3.6,PHP5,PHP7,Go1,Java8 和 CustomRuntime,使用 CustomRuntime 部署参考 [CustomRuntime][customruntime] |

| Description | false | String | This is a function in ${app} application | 函数描述,最大支持 1000 个英文字母、数字、空格、逗号、换行符和英文句号,支持中文 |

| MemorySize | false | Number | 128 | 函数运行时内存大小,默认为 128M,可选范围 64、128MB-3072MB,并且以 128MB 为阶梯 |

| Timeout | false | Number | 3 | 函数最长执行时间,单位为秒,可选值范围 1-900 秒,默认为 3 秒 |

| Eip | false | Boolean | false | 是否[固定出口 IP][固定出口ip] |

| PublicAccess | false | Boolean | true | 是否开启公网访问 |

| Environment | false | List | | 函数的环境变量,配置参考环境变量 |

| Vpc | false | Struct | | 函数的私有网络配置,配置参数参考私有网络 |

| Layers | false | List | | 云函数绑定的 layer, 配置参数参考层配置 |

| DeadLetter | false | Strcut | | 死信队列配置,配置参数参考死信队列 |

| Cls | false | Strcut | | 函数日志配置,配置参数参考函数日志 |

| Tags | false | List | 标签设置。可设置多对 key-value 的键值对 | |

| Cfs | false | List | 文件系统挂载配置,用于云函数挂载文件系统。配置参数参考文件系统。 | |

| Triggers | false | List | 触发器数组。支持以下几种触发器:timer(定时触发器)、apigw(网关触发器)、cos(COS 触发器)、cmq(CMQ Topic 触发器)、ckafka(CKafka 触发器)配置参数参考触发器。 | |

CodeUri

| 参数名称 | 是否必选 | 类型 | 默认值 | 描述 | | —- | —- | —- | —- | —- |

| Src | true | String | | 代码路径。与 object 不能同时存在。 |

| Exclude | false | List | | 不包含的文件或路径, 遵守 glob 语法 |

| Bucket | false | String | | bucket 名称。如果配置了 src,表示部署 src 的代码并压缩成 zip 后上传到 bucket-appid 对应的存储桶中;如果配置了 object,表示获取 bucket-appid 对应存储桶中 object 对应的代码进行部署。 |

| Object | false | String | | 部署的代码在存储桶中的路径。 |

Environment

| 参数名 | 必填 | 类型 | 参数描述 | | —- | —- | —- | —- |

| Key | false | String | 环境Key |

| Value | false | String | 环境Value |

Vpc

| 参数名称 | 是否必选 | 类型 | 描述 | | —- | —- | —- | —- |

| SubnetId | false | String | 子网的 Id |

| VpcId | false | String | 私有网络 的 Id |

Layers

| 参数名称 | 是否必选 | 类型 | 描述 | | —- | —- | —- | —- |

| Name | true | String | 层名称 |

| Version | true | Number | 层版本号 |

DeadLetter

| 名称 | 是否必选 | 类型 | 描述 | | —- | —- | —- | —- |

| Type | true | String | 死信队列模式 |

| Name | true | String | 死信队列名称 |

| FilterType | false | String | 死信队列主题模式的标签形式 |

Cls

| 参数名称 | 是否必选 | 类型 | 描述 | | —- | —- | —- | —- |

| LogsetId | false | String | 函数日志投递到的 CLS LogsetID |

| TopicId | false | String | 函数日志投递到的 CLS TopicID |

Tags

| 参数名 | 必填 | 类型 | 参数描述 | | —- | —- | —- | —- |

| Key | false | String | 标签名 |

| Value | false | String | 标签值 |

Cfs

| 参数名称 | 是否必选 | 类型 | 描述 | | —- | —- | —- | —- |

| CfsId | true | String | 文件系统实例 id |

| MountInsId | true | String | 文件系统挂载点 id |

| LocalMountDir | true | String | 本地挂载点 |

| RemoteMountDir | true | String | 远程挂载点 |

Triggers

| 参数名称 | 是否必选 | 类型 | 描述 | | —- | —- | —- | —- |

| Name | true | String | 触发器名好吃呢个 |

| Type | true | String | 触发器类型 |

| Parameters | true | Struct | 触发器配置 |

参考: https://cloud.tencent.com/document/product/583/39901
触发器配置为数组,按照配置的 name 和 param 创建触发器。对于 apigw 触发器,如果没有配置 apigw 服务 ID,则自动创建一个 apigw 服务,对于其他触发器仅执行配置触发器,不涉及服务资源创建。
支持以下触发器:timer(定时触发器)、apigw(网关触发器)、cos(COS 触发器)、cmq(CMQ Topic 触发器)、ckafka(CKafka 触发器)。

timer 触发器参数

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

| 参数名称 | 是否必选 | 类型 | 默认值 | 描述 | | —- | —- | —- | —- | —- |

| CronExpression | 是 | Number | | 触发时间,为 [Cron][定时触发器-cron表达式]表达式 |

| Enable | 否 | Boolean | true | 触发器是否启用。默认启用 |

| Argument | 否 | Struct | | 入参参数。 |

cos 触发器参数

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

| 参数名称 | 是否必选 | 类型 | 默认值 | 描述 | | —- | —- | —- | —- | —- |

| Bucket | 是 | String | | 配置的 COS Bucket,仅支持选择同地域下的 COS 存储桶 |

| Enable | 否 | Boolean | true | 触发器是否启用。默认启用 |

| Filter | 是 | Struct | | COS 文件名的过滤规则 |

| Events | 是 | String | | COS 的事件类型 |

其中Filter:

| 参数名 | 必填 | 类型 | 参数描述 | | —- | —- | —- | —- |

| Prefix | true | String | 前缀 |

| Suffix | true | String | 后缀 |

cmq 触发器参数

| 参数名称 | 是否必选 | 类型 | 默认值 | 描述 | | —- | —- | —- | —- | —- |

| Name | 是 | String | | CMQ Topic 主题队列名称 |

| Enable | 否 | Boolean | true | 触发器是否启用。默认启用 |

| FilterType | 否 | Number | | 消息过滤类型,1 为标签类型,2 为路由匹配类型 |

| FilterKey | 否 | List | | 当 filterType 为 1 时表示消息过滤标签,当 filterType 为 2 时表示 Binding Key |

ckafka 触发器参数

| 参数名称 | 是否必选 | 类型 | 默认值 | 描述 | | —- | —- | —- | —- | —- |

| Name | 是 | String | | 配置连接的 CKafka 实例,仅支持选择同地域下的实例。 |

| Topic | 是 | String | | 支持在 CKafka 实例中已经创建的 Topic。 |

| MaxMsgNum | 是 | Number | | 5 秒内每汇聚 maxMsgNum 条 Ckafka 消息,则触发一次函数调用 |

| Offset | 是 | String | | offset 为开始消费 Ckafka 消息的位置,目前只能填写 latest |

| Enable | 否 | Boolean | true | 触发器是否启用。默认启用 |

apigw 触发器参数

| 参数名 | 必填 | 类型 | 参数描述 | | —- | —- | —- | —- |

| Service | false | Struct | API网关服务 |

| API | false | Struct | API详细信息 |

其中Service:

| 参数 | 必填 | 参数类型 | 默认值 | 描述 | | —- | —- | —- | —- | —- |

| Id | false | String | | 服务的全局唯一 ID,由系统生成 |

| Protocols | true | List | ['http'] | 服务的前端请求类型,例如 HTTP,HTTPS,HTTP 和 HTTPS。 (http / https) |

| Name | false | String | | 用户自定义的服务名称。 如果该参数未传递,则由系统自动生成一个唯一名称 |

| NetTypes | false | List | ['OUTER'] | 网络类型列表,用于指定支持的访问类型,INNER 为内网访问,OUTER 为外网访问。 |

| Description | false | String | | 用户自定义的服务描述说明 |

| Environment | false | String | | 服务要发布的环境的名称,支持三种环境: test(测试)、prepub(预发布)、 release(发布) |

| Domains | false | List | [] | 自定义 API 域名,配置参数参考customDomain 参数说明 |

Domains:

| 参数 | 必填/可选 | 参数类型 | 默认值 | 描述 | | —- | —- | —- | —- | —- |

| Domain | true | String | | 需要绑定的自定义域名 |

| CertificateId | false | String | | 自定义域名的证书,如果设置为 https,则为必需。 |

| IsDefaultMapping | false | Boolean | true | 是否使用默认路径映射。 如果要自定义路径映射,请设为false |

| PathMappingSet | false | Struct | [] | 自定义路径映射, 当 isDefaultMappingfalse 时必填,配置参数参考pathMappingSet 参数说明 |

| Protocols | false | List | | 绑定自定义域协议类型,例如 HTTP,HTTPS,HTTP 和 HTTPS,默认与前端协议相同 |

PathMappingSet:

| 参数名 | 必填 | 类型 | 参数描述 | | —- | —- | —- | —- |

| path | false | String | 自定义映射路径 |

| environment | false | String | 自定义映射环境 |

其中API:

| 参数 | 必填/可选 | 类型 | 默认值 | 描述 | | —- | —- | —- | —- | —- |

| Id | false | String | | API 的唯一 ID |

| Protocol | false | List | HTTP | 指定的前端 API 类型, 默认为HTTP,如要创建 websocket 类型的 API,请设为WEBSOCKET |

| Path | true | String | | API 路径 |

| Method | true | String | | 请求方法 |

| ServiceType | false | String | SCF | 指定的后端类型,默认为 SCF,如要创建 mock 或 http 的类型,可设为 MOCKHTTP |

| Description | false | String | | API 描述 |

| EnableCORS | false | Boolean | false | 是否启用跨域访问。 true:启用, false:不启用 |

| Function | 必填 | Struct | | 对应的 Serverless 云函数,配置参数参考function 参数说明 |

| UsagePlan | false | Struct | | 基于 API 维度的使用计划,配置参数参考usagePlan 参数说明 |

| Auth | false | Struct | | API 鉴权设置,配置参数参考auth 参数说明 |

| ServiceTimeout | false | Number | | API 的后端服务超时时间,单位为秒 |

| ResponseType | false | String | 返回类型: HTML、JSON、TEST、BINARY、XML | |

| Parameters | false | List | | 前端请求参数,配置参数参考param 参数说明 |

| ServiceConfig | false | Struct | | API 的后端服务配置,配置参数参考serviceConfig 参数说明 |

| ServiceMockReturnMessage | false | String | | Mock 接口类型返回结果,如果 serviceType 设置为 MOCK,此参数必填 |

ServiceConfig

| 参数 | 描述 | | —- | —- |

| Url | API 的后端服务 url |

| Path | API 的后端服务路径 |

| Method | API 的后端服务请求方法 |

UsagePlan

| 参数 | 描述 | | —- | —- |

| UsagePlanId | 用户自定义的基于 API 的使用计划 ID |

| UsagePlanName | 用户自定义的基于 API 的使用计划名称 |

| UsagePlanDesc | 用户自定义的基于 API 的使用计划描述 |

| MaxRequestNum | 允许的请求总数。不传该参数时默认为 1000 次,若其保留为空,则默认情况下将使用-1,表示已禁用 |

Auth

| 参数 | 描述 | | —- | —- |

| SecretName | 用户自定义的密钥名称 |

| SecretIds | 用户自定义的 secretID。当类型为手动时需要。 它可以包含 5 到 50 个字母,数字和下划线。 |

Parameters

| 参数 | 描述 | | —- | —- |

| Name | 请求参数名称 |

| Position | 参数位置,仅支持PATHQUERYHEADER类型 |

| Type | 参数类型,如 String 和 int. |

| DefaultValue | 参数默认值 |

| Required | 参数是否必填, true: 必填; false: 可选 |

| Description | 参数备注/描述 |