tencent cloud

文档反馈

腾讯云无服务器应用模型

最后更新时间:2022-03-18 16:32:30
该文档目前已无效,请参考该产品文档总览页。

    简介

    腾讯云无服务器应用模型(Tencent Cloud Serverless Application Model,TCSAM),是用于在腾讯云上定义 Serverless 应用的模型。
    Serverless 应用是由事件触发运行的应用,一个典型的 Serverless 应用由一个或多个腾讯云云函数 SCF 组成。例如云函数由向 腾讯云对象存储 COS 上传对象文件操作、向 腾讯云消息队列 CMQ 中投递消息等事件触发。这些函数可以独立运行,也可以使用其它资源,例如腾讯云对象存储 COS,腾讯云数据库服务 TencentDB。同时,最基本的 Serverless 应用可以只有一个函数。

    说明:

    • 本文中的 “一定”,“不一定”,“必填”,“将要”,“最好不要”,“应该”,“不应该”,“推荐”,“可能”,和 “可选” 按照 RFC 2119 中的描述进行解释。
    • 本文中 TCSAM 根据 Apache 2.0 许可证 授权,其版本为2018-11-11。

    格式及规范

    TCSAM 用通过 YAMLJSON 格式的模板文件来描述 Serverless 应用。

    TCSAM 模板

    注意:

    TCSAM 中的所有属性名称区分大小写

    Resources:
     default:
       Type: TencentCloud::Serverless::Namespace
       hello_world:
         Type: TencentCloud::Serverless::Function
         Properties:
           CodeUri: ./
           Type: Event
           Description: This is a template function
           Handler: index.main_handler
           MemorySize: 128
           Runtime: Python3.6
           Timeout: 3
           Events:
              timer:  ## 触发器名
                  Type: Timer  ## 定时触发器
                  Properties:
                      CronExpression: '*/5 * * * *'
                      Enable: True  
    

    全局部分

    全局部分定义了 TCSAM 模板中的全局属性,这些属性会被 TencentCloud::Serverless::FunctionTencentCloud::Serverless::Api资源继承。
    示例:

    Globals:
     Function:
       Runtime: Python2.7
       Timeout: 30
       Handler: index.handler
       Environment:
         Variables:
           DB_NAME: mydb
    

    资源类型

    TencentCloud::Serverless::Namespace

    云函数命名空间,命名空间由一组函数组成。

    TencentCloud::Serverless::Function

    描述云函数以及触发该函数的事件源,云函数属于某个命名空间。

    属性

    属性名称 类型 是否必填 描述
    Handler String 云函数的入口执行方法。
    Runtime String 云函数的运行时环境。可选值为:Python2.7、Python3.6、Nodejs6.10、Nodejs8.9、PHP5、PHP7、Golang1、Java8。
    CodeUri String 代码位置。支持本地文件、本地目录、本地 zip 文件、对象存储 COS bucket 及 object 等形式,更多信息参考 CodeUri
    Description String 云函数的描述。
    MemorySize Integer 函数执行时分配的内存大小,单位是 MB,默认为128(MB),按128递增。
    Timeout Integer 函数在被终止之前可以运行的最长时间,单位是秒,默认为3秒。
    Role String 通过填写角色名称,为函数指定运行角色。 如果此字段缺省,将为函数创建一个默认的角色 QCS_SCFExcuteRole。
    Environment 环境变量对象 为函数配置 环境变量
    Events 事件源对象 用于定义触发此函数的事件源。
    VpcConfig VPC 配置对象 用于配置云函数访问 VPC。

    示例:TencentCloud::Serverless::Namespace 与 TencentCloud::Serverless::Function

    ProjectTest: # 命名空间名称
     Type: 'TencentCloud::Serverless::Namespace'
     TestFunction: # 函数名
       Type: 'TencentCloud::Serverless::Function'
       Properties:
         Handler: index.handler
         Runtime: Python2.7
         CodeUri: './'
         Description: Cron function
         Role: QCS_SCFExcuteRole
         Timeout: 10
         MemorySize: 512
    

    注意:

    • 如果有多个函数,可以在函数目录外部新建一个 template.yaml ,在 yaml 里指定每个函数的 CodeUri 即可,部署时将会部署多个函数。
    • VS Code 插件尚未支持同时部署多个函数,请依次进行单个函数的部署。

    如下所示,部署时会自动部署 “func1” ,“func2”两个函数。

    Globals:
     Function:
       Timeout: 10
       MemorySize: 128
       Runtime: Python2.7
    Resources:
     default:
       Type: TencentCloud::Serverless::Namespace
       func1:
         Type: TencentCloud::Serverless::Function
         Properties:
           CodeUri: ./func1
           Description: This is a template function
           Handler: index.main_handler
       func2:
         Type: TencentCloud::Serverless::Function
         Properties:
           CodeUri: ./func2
           Description: This is a template function
           Handler: index.main_handler
    

    事件源类型

    Timer

    描述类型为 定时触发器 的对象。

    属性

    属性名称 类型 是否必填 描述
    CronExpression String 函数被触发的时间,支持指定的 Cron 表达式
    Message String 自定义触发附加消息,可以在云函数入参 event 中获取。
    Enable Boolean 是否启用触发器。

    示例:Timer 事件源对象

    Events:
     timername:
             Type: Timer
             Properties:
                     CronExpression: '*/5 * * * *'
                     Message:"这是一条附加消息"
                     Enable: True
    

    COS

    描述类型为 对象存储触发器 的对象。

    属性

    属性名称 类型 是否必填 描述
    Bucket String COS 对象存储存储桶 bucket 名称。
    Events String 触发云函数的事件,可选值为 cos:ObjectCreated:*cos:ObjectCreated:Putcos:ObjectCreated:Postcos:ObjectCreated:Copycos:ObjectCreated:Appendcos:ObjectCreated:CompleteMultipartUploadcos:ObjectRemove:*cos:ObjectRemove:Deletecos:ObjectRemove:DeleteMarkerCreated
    Filter COS 通知过滤器 触发事件的过滤器规则。
    Enable Boolean 是否启用触发器。

    示例:COS 事件源对象

    Events:
     cli-appid.cos.ap-beijing.myqcloud.com: # full bucket name
             Type: COS
             Properties:
                     Bucket: cli-appid.cos.ap-beijing.myqcloud.com
                     Filter:
                             Prefix: filterdir/
                             Suffix: .jpg
                     Events: cos:ObjectCreated:*
                     Enable: True
    

    Bucket name 及 bucket 字段的值可前往 COS 控制台 查看。

    API 网关

    描述类型为 API 网关触发器 的对象。

    说明:

    如果在描述文件中同时存在 API 资源对象或 API 网关触发器事件源对象时,API 资源对象将生效。

    属性

    属性名称 类型 是否必填 描述
    StageName String 发布阶段的名称,API 网关用作调用统一资源标识符(URI)中的第一个路径段。可选值为:testprepubrelease。默认如果为新 API 服务时为 release,已有 API 服务时为test
    HttpMethod String HTTP 请求方法,可选值为:ANYGETPOSTPUTDELETEHEAD,默认值为ANY
    IntegratedResponse Boolean 是否启用集成响应,默认值为false
    Enable Boolean 是否启用触发器。
    ServiceId String 网关服务 ID。在 SCF CLI 或 VS Code 插件部署时,在 template.yaml 中未填写 ServiceId,系统会新建网关并返回相关信息。您可以将此信息里的 ServiceId 填写到 template.yaml ,之后部署不会重复新建。

    示例:API 事件源对象

    Events:
     hello_world_apigw:  # ${FunctionName} + '_apigw'
             Type: APIGW
             Properties:
                     StageName: release
                     ServiceId:
                     HttpMethod: ANY
    

    CMQ

    描述类型为 CMQ 消息队列触发器 的对象。

    属性

    属性名称 类型 是否必填 描述
    Name String 消息队列名称。
    Enable Boolean 是否启用触发器。

    示例:CMQ 事件源对象

    Events:
     topicname:            # topic name
             Type: CMQ
             Properties:
                     Name: qname
    

    Name 字段的值为 topic 名,可前往 CMQ 控制台 获取信息。

    CKafka

    描述类型为 CKafka 触发器 的对象。

    属性

    属性名称 类型 是否必填 描述
    Name String 消息队列 CKafka ID。
    Topic String 消息队列 CKafka 主题 Topic 名称。
    MaxMsgNum Integer 最大批量消息数,范围1 - 1000。
    Offset String 起始 offset 位置,默认为latest
    Enable Boolean 是否启用触发器。

    示例:CKafka 事件源对象

    Events:
    ckafka-name:
        Type: Ckafka  
        Properties:
            Name: ckafka-XXXXX
            Topic: test_scf
            MaxMsgNum: 999
            Offset: latest
            Enable: true  
    

    Name 的字段为 CKafka ID,Topic 字段的值为 topic name 。可前往 CKafka 控制台 查看对应信息。

    属性类型

    事件源对象

    描述触发函数的事件源的对象。

    属性

    属性名称 类型 是否必填 描述
    Type String 事件类型。 事件源类型包括 TimerCOSAPICMQ。有关所有类型的更多信息, 请参阅 事件源类型
    Properties * 描述此事件映射属性的对象。必须符合定义的类型。有关所有类型的更多信息,请参阅 事件源类型

    示例:事件源对象

    Events:
     Type: Timer
     Properties:
       CronExpression: '*/5 * * * *'
       Message:"这是一条附加消息"
       Enable: true
    

    VPC 配置对象

    VPC 配置对象包含的属性包括:VpcIdSubnetId 属性。它们所代表的含义参考 VPC Config 对象

    属性名称 类型 是否必填 描述
    VpcId String VPC ID。
    SubnetId String 属于 VPC 内的子网 ID。

    示例:VPC 配置对象

    VpcConfig:
     VpcId: 'vpc-qdqc5k2p'
     SubnetId: 'subnet-pad6l61i'
    

    环境变量对象

    环境变量对象描述了函数可以配置的环境变量属性,环境变量配置为一系列的键值对。

    属性名称 类型 描述
    Variables StringString 的映射 定义环境变量的字符串对字符串映射,其中变量名为 key,变量值为 value。变量名限制为字母与数字组合,且第一个字符需要为字母。变量值定义为字母与数字及特殊字符 _(){}[]$*+-\/"#',;.@!? 的组合。

    示例:环境变量对象

    Environment:
     Variables:
       MYSQL_USER: root
       MYSQL_PASS: pass
    

    数据类型

    COS 对象

    通过指定 BucketKey 指定对象存储位置,用于指向代码存储位置。
    示例:

    CodeUri:
     Bucket: mycodebucket
     Key: '/code.zip'
    

    CodeUri

    CodeUri 用来指定代码存储的位置,可以指定为本地文件系统中的文件、文件夹、zip 包。
    示例:

    CodeUri: index.py
    
    CodeUri: ./build
    
    CodeUri: /user/code/func/build.zip
    

    COS 通知过滤

    用于指定对象存储通知时的过滤配置,由前缀过滤参数和后缀过滤参数组合而成。
    示例:

    Filter:
    Prefix: 'filterdir/'
    Suffix: '.jpg'
    
    联系我们

    联系我们,为您的业务提供专属服务。

    技术支持

    如果你想寻求进一步的帮助,通过工单与我们进行联络。我们提供7x24的工单服务。

    7x24 电话支持