前言

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

使用

最简使用方法

模版拉取:

s init python3 -p tencent

其中Yaml的默认配置为:

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

完整Yaml示例

MyFunction:
  Component: scf
  Provider: tencent
  Access: release
  Properties:
    Region: ap-guangzhou # 函数所在区域
    Namespace:
      Name: default
    Function:
      Name: Name
      Role: exRole # 云函数执行角色
      EnableRoleAuth: true # 默认会尝试创建 SCF_QcsRole 角色,如果不需要配置成 false 即可
      # 1. 默认写法,新建特定命名的 cos bucket 并上传
      CodeUri: ./src
      # 2. CodeUri 为对象,并且制定忽略上传文件夹 node_modules
      # CodeUri:
      #   Src: ./code
      #   Exclude:
      #     - 'node_modules/**'
      # 3. 指定 bucket name 和文件的方式,直接上传 cos 中的文件部署云函数
      # CodeUri:
      #    Bucket: tinatest   # bucket name,当前会默认在bucket name后增加 appid 后缀, e.g. bucketname-appid
      #    Key: 'code.zip'      # bucket key 指定存储桶内的文件
      # 4. 指定本地文件到 bucket
      # CodeUri:
      #   Bucket: tinatest   # bucket name
      #   Src:         # 指定本地路径
      Handler: index.main_handler #入口
      Runtime: Nodejs10.15 # 运行环境 默认 Nodejs10.15
      Description: This is a function in application.
      MemorySize: 128 # 内存大小,单位MB
      Timeout: 20 # 超时时间,单位秒
      Environment: #  环境变量
        - Key: key
          Value: value
      PublicAccess: true # 是否开启公网访问
      Vpc: # 私有网络配置
        VpcId: '' # 私有网络的Id
        SubnetId: '' # 子网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: true/false # 是否开启固定IP
      Tags: #标签配置
        - Key: key
          Value: value
      Triggers: # 触发器
        - Type: timer # 定时触发器
          Name: timername#触发器名称,默认timer-${name}-${stage}
          Parameters:
            CronExpression: '*/5 * * * *' # 每5秒触发一次
            Enable: true
            Argument: argument # 额外的参数
        - Type: apigw # api网关触发器,已有apigw服务,配置触发器
          Name: apigwname#触发器名称,默认apigw-${name}-${stage}
          Parameters:
            Id: service-8dsikiq6
            Protocols:
              - http
            NetTypes:
              - OUTER
            Description: the serverless service
            Environment: release
            API:
              - Path: /users
                Method: POST
              - Path: /test/{abc}/{cde}
                Id: api-id
                Method: GET
                Description: Serverless REST API
                EnableCORS: TRUE
                ResponseType: HTML
                ServiceTimeout: 10
                Parameters:
                  - Name: abc
                    Position: PATH
                    Required: 'TRUE'
                    Type: string
                    DefaultValue: abc
                    Description: mytest
                  - Name: cde
                    Position: PATH
                    Required: 'TRUE'
                    Type: string
                    DefaultValue: abc
                    Description: mytest
                Function:
                  IsIntegratedResponse: TRUE
                  FunctionQualifier: $DEFAUlt
                UsagePlan:
                  UsagePlanId: 1111
                  UsagePlanName: slscmp
                  UsagePlanDesc: sls create
                  MaxRequestNum: 1000
                Auth:
                  ServiceTimeout: 15
                  SecretName: secret
                  SecretIds:
                      - xxx
        - Type: apigw # api网关触发器,无apigw服务,自动创建服务
          Name: apigwname_2 #触发器名称,默认apigw-${name}-${stage}
          Parameters:
            Protocols:
              - http
            Description: the serverless service
            Environment: release
            API:
              - path: /users
                method: POST
        - Type: cos # cos触发器
          Name: cosname #触发器名称,默认cos-${name}-${stage}
          Parameters:
            Bucket: cli-appid.cos.ap-beijing.myqcloud.com
            Filter:
              Prefix: filterdir/
              Suffix: .jpg
            Events: 'cos:ObjectCreated:*'
            Enable: true
        - Type: cmq # CMQ Topic 触发器
          Name: cmqname #触发器名称,默认cmq-${name}-${stage}
          Parameters:
            Name: test-topic-queue
            Enable: true
            FilterType: 1 # 消息过滤类型,1为标签类型,2为路由匹配类型
            FilterKey: # 当 filterType 为1时表示消息过滤标签,当 filterType 为2时表示 Binding Key
              - key1
              - key2
        - Type: ckafka # ckafka触发器
          Name: ckafkaname  #触发器名称,默认ckafka-${name}-${stage}
          Parameters:
            Name: ckafka-2o10hua5
            Topic: test
            MaxMsgNum: 999
            Offset: latest
            Enable: true

详细使用方法

参数名必填类型参数描述
RegiontrueEnum地域
NamespacefalseStruct命名空间
FunctiontrueStruct函数

Namespace

参数名必填类型参数描述
NamefalseString命名空间

Function

参数名称是否必选类型默认值描述
NametrueString${name}-${stage}-${app}创建的函数名称。函数名称支持 26 个英文字母大小写、数字、连接符和下划线,第一个字符只能以字母开头,最后一个字符不能为连接符或者下划线,名称长度 2-60。云函数名称又是资源 ID,为了保证资源的唯一性,默认采用 ${name}-${stage}-${app} 变量方式。
RolefalseString云函数绑定的运行角色。
EnableRoleAuthfalseBooleantrue默认会尝试创建 SCF_QcsRole 角色。SCF_QcsRole 为 SCF 默认配置角色。该服务角色用于提供 SCF 配置对接其他云上资源的权限,包括但不限于代码文件访问、触发器配置。配置角色的预设策略可支持函数执行的基本操作。如果不需要配置成 false 即可。
CodeUritrueStruct函数代码路径。
HandlerfalseStringPyton/Php/Nodejs 默认值为 index.main_handler,Java 默认值为 example.Hello::mainHandler,Go 默认值为 main函数处理方法名称,名称格式支持 "文件名称.方法名称" 形式,文件名称和函数名称之间以"."隔开,文件名称和函数名称要求以字母开始和结尾,中间允许插入字母、数字、下划线和连接符,文件名称和函数名字的长度要求是 2-60 个字符。
RuntimefalseStringNodejs10.15函数运行环境,目前仅支持: Nodejs6.10,Nodejs8.9,Nodejs10.15,Nodejs12.16,Python2.7,Python3.6,PHP5,PHP7,Go1,Java8 和 CustomRuntime,使用 CustomRuntime
DescriptionfalseStringThis is a function in ${app} application函数描述,最大支持 1000 个英文字母、数字、空格、逗号、换行符和英文句号,支持中文
MemorySizefalseNumber128函数运行时内存大小,默认为 128M,可选范围 64、128MB-3072MB,并且以 128MB 为阶梯
TimeoutfalseNumber3函数最长执行时间,单位为秒,可选值范围 1-900 秒,默认为 3 秒
EipfalseBooleanfalse是否固定出口 IP
PublicAccessfalseBooleantrue是否开启公网访问
EnvironmentfalseList函数的环境变量
VpcfalseStruct函数的私有网络配置
LayersfalseList云函数绑定的 layer
DeadLetterfalseStrcut死信队列配置
ClsfalseStrcut函数日志配置
TagsfalseList标签设置。可设置多对 key-value 的键值对
CfsfalseList文件系统挂载配置,用于云函数挂载文件系统。
TriggersfalseList触发器数组。支持以下几种触发器:timer(定时触发器)、apigw(网关触发器)、cos(COS 触发器)、cmq(CMQ Topic 触发器)、ckafka(CKafka 触发器)
CodeUri
参数名称是否必选类型默认值描述
SrctrueString代码路径。与 object 不能同时存在。
ExcludefalseList不包含的文件或路径, 遵守 glob 语法
BucketfalseStringbucket 名称。如果配置了 src,表示部署 src 的代码并压缩成 zip 后上传到 bucket-appid 对应的存储桶中;如果配置了 object,表示获取 bucket-appid 对应存储桶中 object 对应的代码进行部署。
ObjectfalseString部署的代码在存储桶中的路径。
Environment
参数名必填类型参数描述
KeyfalseString环境Key
ValuefalseString环境Value
Vpc
参数名称是否必选类型描述
SubnetIdfalseString子网的 Id
VpcIdfalseString私有网络 的 Id
Layers
参数名称是否必选类型描述
NametrueString层名称
VersiontrueNumber层版本号
DeadLetter
名称是否必选类型描述
TypetrueString死信队列模式
NametrueString死信队列名称
FilterTypefalseString死信队列主题模式的标签形式
Cls
参数名称是否必选类型描述
LogsetIdfalseString函数日志投递到的 CLS LogsetID
TopicIdfalseString函数日志投递到的 CLS TopicID
Tags
参数名必填类型参数描述
KeyfalseString标签名
ValuefalseString标签值
Cfs
参数名称是否必选类型描述
CfsIdtrueString文件系统实例 id
MountInsIdtrueString文件系统挂载点 id
LocalMountDirtrueString本地挂载点
RemoteMountDirtrueString远程挂载点
Triggers
参数名称是否必选类型描述
NametrueString触发器名好吃呢个
TypetrueString触发器类型
ParameterstrueStruct触发器配置

参考: 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

参数名称是否必选类型默认值描述
CronExpressionNumber触发时间,为定时触发器-cron表达式
EnableBooleantrue触发器是否启用。默认启用
ArgumentStruct入参参数。
cos 触发器参数

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

参数名称是否必选类型默认值描述
BucketString配置的 COS Bucket,仅支持选择同地域下的 COS 存储桶
EnableBooleantrue触发器是否启用。默认启用
FilterStructCOS 文件名的过滤规则
EventsStringCOS 的事件类型

其中Filter:

参数名必填类型参数描述
PrefixtrueString前缀
SuffixtrueString后缀
cmq 触发器参数
参数名称是否必选类型默认值描述
NameStringCMQ Topic 主题队列名称
EnableBooleantrue触发器是否启用。默认启用
FilterTypeNumber消息过滤类型,1 为标签类型,2 为路由匹配类型
FilterKeyList当 filterType 为 1 时表示消息过滤标签,当 filterType 为 2 时表示 Binding Key
ckafka 触发器参数
参数名称是否必选类型默认值描述
NameString配置连接的 CKafka 实例,仅支持选择同地域下的实例。
TopicString支持在 CKafka 实例中已经创建的 Topic。
MaxMsgNumNumber5 秒内每汇聚 maxMsgNum 条 Ckafka 消息,则触发一次函数调用
OffsetStringoffset 为开始消费 Ckafka 消息的位置,目前只能填写 latest
EnableBooleantrue触发器是否启用。默认启用
apigw 触发器参数
参数名必填类型参数描述
IdfalseString服务的全局唯一 ID,由系统生成
ProtocolstrueList服务的前端请求类型,例如 HTTP,HTTPS,HTTP 和 HTTPS。 (http / https)
NetTypesfalseList网络类型列表,用于指定支持的访问类型,INNER 为内网访问,OUTER 为外网访问。
DescriptionfalseString用户自定义的服务描述说明
EnvironmentfalseString服务要发布的环境的名称,支持三种环境: test(测试)、prepub(预发布)、 release(发布)
DomainsfalseList自定义 API 域名,配置参数参考customDomain 参数说明
APIfalseStructAPI详细信息

Domains:

参数必填/可选参数类型默认值描述
DomaintrueString需要绑定的自定义域名
CertificateIdfalseString自定义域名的证书,如果设置为 https,则为必需。
IsDefaultMappingfalseBooleantrue是否使用默认路径映射。 如果要自定义路径映射,请设为false
PathMappingSetfalseStruct[]自定义路径映射, 当 isDefaultMappingfalse 时必填,配置参数参考pathMappingSet 参数说明
ProtocolsfalseList绑定自定义域协议类型,例如 HTTP,HTTPS,HTTP 和 HTTPS,默认与前端协议相同

PathMappingSet:

参数名必填类型参数描述
pathfalseString自定义映射路径
environmentfalseString自定义映射环境

其中API:

参数必填/可选类型默认值描述
IdfalseStringAPI 的唯一 ID
ProtocolfalseListHTTP指定的前端 API 类型, 默认为HTTP,如要创建 websocket 类型的 API,请设为WEBSOCKET
PathtrueStringAPI 路径
MethodtrueString请求方法
ServiceTypefalseStringSCF指定的后端类型,默认为 SCF,如要创建 mock 或 http 的类型,可设为 MOCKHTTP
DescriptionfalseStringAPI 描述
EnableCORSfalseBooleanfalse是否启用跨域访问。 true:启用, false:不启用
Function必填Struct对应的 Serverless 云函数,配置参数参考function 参数说明
UsagePlanfalseStruct基于 API 维度的使用计划,配置参数参考usagePlan 参数说明
AuthfalseStructAPI 鉴权设置,配置参数参考auth 参数说明
ServiceTimeoutfalseNumberAPI 的后端服务超时时间,单位为秒
ResponseTypefalseString返回类型: HTML、JSON、TEST、BINARY、XML
ParametersfalseList前端请求参数,配置参数参考param 参数说明
ServiceConfigfalseStructAPI 的后端服务配置,配置参数参考serviceConfig 参数说明
ServiceMockReturnMessagefalseStringMock 接口类型返回结果,如果 serviceType 设置为 MOCK,此参数必填
ServiceConfig
参数描述
UrlAPI 的后端服务 url
PathAPI 的后端服务路径
MethodAPI 的后端服务请求方法
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参数备注/描述
在 GitHub 上编辑本页面 更新时间: Wed, Aug 10, 2022