本文介绍使用FC组件的YAML模式所需遵循的规范和相关参数的含义。

YAML文件

FC组件的YAML文件示例如下所示:
edition: 1.0.0          #  命令行YAML规范版本,遵循语义化版本(Semantic Versioning)规范。
name: ffmpeg-app        #  项目名称。
access: default         #  秘钥别名。

services:
  fc-deploy-test: #  服务名称。
    component: devsapp/fc  # 组件名称。
    props: #  组件的属性值。
      region: cn-qingdao
      service:
        name: fc-deploy-service
        description: demo for fc-deploy component
        internetAccess: true
        role: 'acs:ram::xxx:role/qianfeng-fc-deploy-test-role'
        tracingConfig: Enable
        nasConfig:
          userId: 10003
          groupId: 10003
          mountPoints:
            - serverAddr: xxx.cn-qingdao.nas.aliyuncs.com
              nasDir: /qianfeng-fc-deploy-service
              fcDir: /mnt/auto
        vpcConfig:
          vpcId: xxx
          securityGroupId: xxx
          vSwitchIds:
            - vsw-xxx
        logConfig:
          project: xxx
          logstore: xxx
          enableRequestMetrics: true
          enableInstanceMetrics: true
          logBeginRule: DefaultRegex
      function:
        name: fc-base-service
        description: 'this is test'
        codeUri: './code.zip'
        ossBucket: xxx
        ossKey: xxx
        handler: 'index.handler'
        memorySize: 128
        runtime: nodejs12
        timeout: 60
        caPort: 9000
        customContainerConfig:
          image: xxx
          command: xxx
          args: xxx
        environmentVariables:
          key: 'value'
        initializationTimeout: 20
        initializer: index.initializer
        instanceConcurrency: 1
        instanceType: e1
        instanceLifecycleConfig:
          preFreeze:
            handler: index.xxx
            timeout: 60
          preStop:
            handler: index.xxx
            preStop: 60
        asyncConfiguration:
          destination:
            onSuccess: acs:fc:{region}:{uid}:services/{serviceName}.{qualifier}/functions/{functionName} 
            onFailure: acs:fc:{region}:{uid}:services/{serviceName}.{qualifier}/functions/{functionName}
            # onSuccess: acs:fc:::services/{serviceName}.{qualifier}/functions/{functionName}
            # onSuccess: acs:mns:::/queues/{queuesName}/messages # mns/queues
            # onSuccess: acs:mns:::/topics/{topicsName}/messages # mns/topics
          maxAsyncEventAgeInSeconds: 456
          maxAsyncRetryAttempts: 3
          statefulInvocation: true
      triggers:
        - name: httpTrigger
          type: http
          config:
            authType: anonymous
            methods:
              - GET
        - name: timerTrigger
          type: timer
          config:
            cronExpression: '0 0 8 * * *'
            enable: true
            payload: 'awesome-fc'
        - name: ossTrigger
          type: oss
          role: xxx
          sourceArn: xxx
          config:
            bucketName: fassdemo
            events:
              - oss:ObjectCreated:*
              - oss:ObjectRemoved:DeleteObject
            filter:
              Key:
                Prefix: source/
                Suffix: .png
        - name: logTrigger
          type: log
          role: xxx
          sourceArn: xxx
          config:
            logConfig:
              project: fass-demo
              logstore: fc-log
            jobConfig:
              maxRetryTime: 1
              triggerInterval: 30
            sourceConfig:
              logstore: function-log
            functionParameter:
              key: val
            enable: true
        - name: mnsTrigger
          type: mns_topic
          role: xxx
          sourceArn: xxx
          config:
            topicName: test-topic
            region: cn-hangzhou
            notifyContentFormat: 'JSON'
            notifyStrategy: 'BACKOFF_RETRY'
        - name: cdnTrigger
          type: cdn_events
          role: xxx
          sourceArn: xxx
          config:
            eventName: LogFileCreated
            eventVersion: '1.0.0'
            notes: cdn events trigger test
            filter:
              domain: 
                - 'www.taobao.com'
                - 'www.tmall.com'
      customDomains:
        - domainName: auto
          protocol: HTTP
          routeConfigs:
            - path: /a
              serviceName: qianfeng-fc-deploy-service
              functionName: custom-container-function
              methods:
                - GET
          certConfig:
            certName: xxx
            certificate: xxx
            privateKey: xxx

字段说明

YAML文件内的字段说明如下所示:
字段名称 是否必填 类型 描述
region Enum 地域。用于部署资源的地域。关于支持的地域, 请参见服务地址
service Struct 服务。关于该字段的详细信息,请参见Service字段
function Struct 函数。详细信息,请参见function字段
triggers Struct 触发器。详细信息,请参见triggers字段
customDomains Struct 自定义域名。详细信息,请参见customDomains字段

Service字段

参数名称 是否必填 类型 描述
name String 服务的名称。
description String 服务的描述。
internetAccess Boolean 是否允许函数访问公网。取值如下:
  • true:允许函数访问公网。
  • false:不允许函数访问公网。
tracingConfig String 是否开启链路追踪,取值如下:
  • Enable:开启链路追踪。
  • Disable:关闭链路追踪。
role 支持以下两种类型:
  • String:简单配置。
  • Struct:详细配置。
授予函数计算所需权限的RAM角色。
包含以下使用场景:
  • 把函数产生的日志发送到您的Logstore中。
  • 为函数在执行中访问其他云资源生成临时密钥。
详细信息,请参见Role
logConfig 支持以下两种类型:
  • Enum:简单配置。
  • Struct:详细配置。
日志配置。函数产生的日志会写入到这里配置的Logstore。详细信息,请参见logConfig
vpcConfig 支持以下两种类型:
  • Enum:简单配置。
  • Struct:详细配置。
VPC配置,配置此参数后函数可以访问指定的VPC。详细信息,请参见vpcConfig
nasConfig 支持以下两种类型:
  • Enum:简单配置。
  • Struct:详细配置。
NAS配置,配置此参数后函数可以访问指定的NAS。详细信息,请参见nasConfig

Role

Role参数类型的取值如下:
  • String:当参数类型选择使用String简单配置呈现时,role参数则以字符串的形式呈现,格式为acs:ram::xxx:role/qianfeng-fc-deploy-test-role
  • Struct:当该参数类型选择使用Struct详细配置呈现时,role参数则以结构的形式呈现,role内的参数配置如下所示:
    参数 是否必填 类型 描述
    name String 角色的名称。
    policies List 策略列表。

    policies

    policies表示策略列表时,列表中的元素支持stringpolicy结构体,该结构体如下所示:
    参数 是否必填 类型 参数描述
    name String 策略的名称。
    description String 策略的描述。
    statement List 策略内容列表。

    statement

    statement表示策略列表时,列表中元素结构体的参数配置如下所示:
    参数 是否必填 类型 参数描述
    Effect String 策略的授权效力,取值如下:
    • Allow:允许操作。
    • Deny:禁止操作。
    Action List 策略动作。
    Resource String或List 策略的目标资源。
    Condition Object 策略的限制条件。
    关于权限策略基本元素的更多信息,请参见权限策略基本元素
    role参数采用结构输出时,示例如下:
    role:
      name: roleName
      policies:
        - AliyunOSSFullAccess
        - name: myPolicy
          description: custom policy
          statement: 
          - Effect: Allow
            Action: 
              - log:ListProject
            Resource:
              - acs:log:*:*:project/*

logConfig

logCofig参数支持以下类型选择:
  • String:当logConfig参数类型选择使用String简单配置呈现时,该参数请设置为auto
  • Struct:当logConfig参数类型选择使用Struct详细配置呈现时,该参数内的参数配置如下所示:
    参数 是否必填 类型 描述
    logStore String 日志服务SLS内的Logstore名称。
    project String 日志服务SLS内的Project名称。
    enableRequestMetrics Boolean 是否开启请求级别指标。开启该功能后,您可以查看该服务下所有函数的某次调用所消耗的时间及内存。取值如下:
    • true:开启。
    • false:关闭。
    enableInstanceMetrics Boolean 是否开启实例级别指标,开启该功能后您可以查看CPU使用情况、内存使用情况、实例网络情况和实例内请求数等核心指标信息。取值如下:
    • true:开启。
    • false:关闭。
    logBeginRule String 是否启用日志服务,取值说明如下:
    • None:默认值,表示不启用日志分割规则。
    • DefaultRegex:表示启用日志分割规则。启用后,函数计算将按日志分割规则进行切分,切分后的日志块将被写入到日志服务。该规则将按照行首是否带有日期进行切分,例如您的日志行首是2021-10-10,则该日志将被认为是一块日志的首行,首行和接下来连续不带日期的日志将被作为整体写入到日志服务。

vpcConfig

vpcConfig参数支持以下类型选择:
  • String:当vpcConfig参数类型选择使用String简单配置呈现时,该参数请设置为auto
  • Struct:当vpcConfig参数类型选择使用Struct详细配置呈现时,该参数内的参数配置如下所示:
    参数 是否必填 类型 描述
    securityGroupId String 安全组ID。
    vSwitchIds List 一个或多个交换机ID。
    vpcId String VPC ID。

nasConfig

nasConfig参数支持以下类型选择:
  • String:当nasConfig参数类型选择使用String简单配置呈现时,该参数请设置为auto
  • Struct:当nasConfig参数类型选择使用Struct详细配置呈现时,该参数内的参数配置如下所示:
    参数 是否必填 类型 描述
    mountPoints List 目录配置。详细信息,请参见mountPoints
    userId String 账号ID。默认值为10003。
    groupId String 群组ID。默认值为10003。

mountPoints

参数 是否必填 类型 描述
serverAddr String NAS服务器的地址。
nasDir String NAS的目录。
fcDir String 函数计算目录。

function字段

function字段内的参数说明如下:
参数 是否必填 类型 描述
name String 函数的名称。
description String 函数的描述。
codeUri String 代码所在的位置。
ossBucket String 如果指定OSS代码,所在的存储桶不能与codeUri同时出现。
ossKey String 如果指定OSS代码,所对应的对象不能与codeUri同时出现。
handler String 函数执行入口。具体格式和语言相关,详细信息,请参见函数入口
memorySize Number 函数的内存规格,单位为MB,内存大小为64 MB的倍数。不同的函数实例类型内存规格存在差异,具体信息,请参见实例规格
runtime String 函数运行的语言环境。当前支持nodejs6nodejs8nodejs10nodejs12python2.7python3java8java11php7.2dotnetcore2.1custom runtimecustom container
timeout Number 函数运行的超时时间,单位为秒,默认60秒。最小1秒,最长10分钟。函数超过这个时间后会被终止执行。
caPort Number Custom Runtime或Custom Container运行时HTTP Server的监听端口。
customContainerConfig Struct Custom Container运行时的相关配置,配置后函数可以使用自定义容器镜像执行函。详细信息,请参见customContainerConfig
environmentVariables List 为函数设置的环境变量,可以在函数中获取环境变量的值。该参数属于Object格式。关于环境变量的详细信息,请参见环境变量简介
initializationTimeout Number 初始化函数运行的超时时间,单位为秒,默认3秒。最小1秒,最长5分钟。初始化函数超过这个时间后会被终止执行。
initializer String 初始化函数执行的入口,具体格式与语言相关,更多信息,请参见Initializer函数
instanceConcurrency Struct 单实例多并发。
instanceType String 函数实例类型。取值:
  • e1:弹性实例
  • c1:性能实例
instanceLifecycleConfig Struct 扩展函数。详细信息,请参见instanceLifecycleConfig
asyncConfiguration Struct 异步配置。详细信息,请参见asyncConfiguration

customContainerConfig

参数 是否必填 类型 描述
image String 容器镜像仓库的地址。
command String 容器启动命令。
args String 容器启动参数。
accelerationType String 是否开启镜像加速,取值如下:
  • Default:表示开启镜像加速。
  • None:表示关闭镜像加速。
instanceID String 容器镜像服务企业版实例的ID。当容器镜像选择的是企业版实例时,您需要给容器镜像服务企业版添加实例ID,该实例的默认解析必须是服务所在的VPC网络地址。目前不支持PrivateZone产品定义域名解析。

instanceLifecycleConfig

参数 是否必填 类型 描述
preFreeze Struct preFreeze函数。
preStop Struct preStop函数。
说明 preStoppreFreeze内的参数说明一致。关于preFreezepreStop的参数说明,请参见preFreeze和preStop

preFreeze

参数 是否必填 类型 描述
handler String 函数入口。
timeout Number 超时时间。

asyncConfiguration

参数 是否必填 类型 参数描述
maxAsyncEventAgeInSeconds Number 消息最大存活时长,默认值为172800。取值范围[1,2592000]。单位:秒。
maxAsyncRetryAttempts Number 异步调用失败后的最大重试次数,默认值为3。取值范围[0,8]。
statefulInvocation Boolean 是否开启有状态异步调用。取值如下:
  • true:表示已开启有状态异步调用。
  • false:表示未开启有状态异步调用。
destination Struct 异步调用目标的配置结构体。详细信息,请参见destination

destination

参数 是否必填 类型 描述
onSuccess String 成功时。
onFailure String 失败时。

triggers字段

triggers字段内的参数说明如下:
参数 是否必填 类型 描述
name String 触发器的名称。
type Enum 触发器的类型。触发器的类型包含:
role String 使用一个RAM角色的ARN为函数指定执行角色,事件源会使用该角色触发函数执行,请确保该角色有调用函数的权限。
sourceArn String 触发器事件源的ARN。
config Struct 触发器配置,针对不同类型的触发器,配置有所不同。

OSS触发器

参数 是否必填 类型 描述
bucketName String OSS中对应Bucket的名称。
events List OSS中触发函数执行的事件。
filter Struct 过滤条件,包含至少一个过滤条件。详细信息,请参见filter

filter

参数 是否必填 类型 描述
key Struct 筛选条件。详细信息,请参见key

key

参数 是否必填 类型 描述
Prefix String 前缀。
Suffix String 后缀。

Log触发器

参数 是否必填 类型 描述
logConfig String Log配置。详细信息,请参见logConfig
jobConfig List Job配置。详细信息,请参见jobConfig
sourceConfig Struct Source配置。详细信息,请参见sourceConfig
functionParameter Struct 日志服务将该配置内容作为函数事件,默认为空即{}。该参数将作为函数事件的Parameter传入函数,支持Object格式。
enable Boolean 触发器的开关。

logConfig

参数 是否必填 类型 描述
project String 日志服务的Project名称。
logStore String 触发函数执行时,产生的日志会记录到该Logstore内。

jobConfig

参数 是否必填 类型 描述
maxRetryTime String 日志服务触发函数执行时,如果遇到错误,所允许的最大尝试次数。取值范围[0,100]。
triggerInterval String 日志服务触发函数执行的间隔。取值范围[3,600],单位为秒。

sourceConfig

参数 是否必填 类型 描述
logstore String 数据源的Logstore名称。触发器会定时从该Logstore订阅数据到函数计算

Timer触发器

参数 是否必填 类型 描述
cronExpression String 时间触发器表达式,支持Cron表达式和时区表达式。详细信息,请参见时间表达式
enable Boolean 是否启用该触发器。取值如下:
  • true:开启。
  • false:关闭。
payload String 表示传入参数。

HTTP触发器

参数 是否必填 类型 描述
authType String 鉴权类型。取值为anonymousfunction
methods List HTTP触发器支持的访问方法。支持的类型包含GET、POST、PUT、DELETE和HEAD。

MNS触发器

参数 是否必填 类型 描述
topicName String MNS触发器的名称。
region List MNS触发器所在的地域,若不填,则默认和函数所在的地域一致。
notifyContentFormat String 推送给函数入参事件的格式,支持STREAM和JSON格式。
notifyStrategy String 消息服务MNS向Endpoint推送消息出现错误时的重试策略。取值如下:
  • 逃避重试:BACKOFF_RETRY。
  • 指数衰减重试:EXPONENTIAL_DECAY_RETRY。
filterTag String 描述该订阅中消息过滤的标签,当标签一致的消息才会被推送,不超过16个字符的字符串,默认不进行消息过滤,即默认不填写该字段。

CDN触发器

参数 是否必填 类型 描述
eventName String CDN端触发函数执行的事件,创建后不可以更改。
eventVersion String CDN端触发函数执行事件的版本,创建后不可以更改。
notes String 备注信息。
filter Struct 过滤条件,包含至少一个过滤条件。详细信息,请参见filter

filter

参数 是否必填 类型 描述
domain List 过滤参数值的集合。

customDomains字段

customDomains字段内的参数说明如下:
参数 是否必填 类型 描述
domainName String 域名。如果取值为auto,系统则会默认分配域名。
protocol String 域名支持的协议类型。
  • HTTP:仅支持HTTP协议。
  • HTTPS:仅支持HTTPS协议。
  • HTTP,HTTPS:支持HTTP协议和HTTPS协议。
routeConfigs List 路由表:定义域名访问时的路径到Function的映射。详细信息,请参见routeConfigs
certConfig Struct HTTPS证书的配置信息。详细信息,请参见certConfig

routeConfigs

参数 是否必填 类型 描述
path String 路径。
serviceName String 服务的名称。
functionName String 函数的名称。
qualifier String 服务的版本。

certConfig

参数 是否必填 类型 描述
certName String 证书的名称。
privateKey String 表示私钥。
certificate String 表示证书,如果是证书链,则需要依次填写多个证书。