本文介绍使用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/test-fc-deploy-test-role'
tracingConfig: Enable
nasConfig:
userId: 10003
groupId: 10003
mountPoints:
- serverAddr: xxx.cn-qingdao.nas.aliyuncs.com
nasDir: /test-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
instanceID: cri-xxxxxx
accelerationType: Default
environmentVariables:
key: 'value'
initializationTimeout: 20
initializer: index.initializer
instanceConcurrency: 1
instanceType: e1
layers: <layerARN>
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
qualifier: xxx
config:
authType: anonymous
methods:
- GET
- name: timerTrigger
type: timer
qualifier: xxx
config:
cronExpression: '0 0 8 * * *'
enable: true
payload: 'awesome-fc'
- name: ossTrigger
type: oss
qualifier: xxx
role: xxx
sourceArn: xxx
config:
bucketName: fassdemo
events:
- oss:ObjectCreated:*
- oss:ObjectRemoved:DeleteObject
filter:
Key:
Prefix: source/
Suffix: .png
- name: logTrigger
type: log
qualifier: xxx
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
qualifier: xxx
role: xxx
sourceArn: xxx
config:
topicName: test-topic
region: cn-hangzhou
notifyContentFormat: 'JSON'
notifyStrategy: 'BACKOFF_RETRY'
- name: cdnTrigger
type: cdn_events
qualifier: xxx
role: xxx
sourceArn: xxx
config:
eventName: LogFileCreated
eventVersion: '1.0.0'
notes: cdn events trigger test
filter:
domain:
- 'www.taobao.com'
- 'www.example.com'
- name: otsTrigger
sourceArn: acs:ots:<region>:<account-id>:instance/<instance>/table/<table>
type: tablestore
role: acs:ram::<account-id>:role/AliyunTableStoreStreamNotificationRole
qualifier: xxx
config:
instanceName: xxx
tableName: test
customDomains:
- domainName: auto
protocol: HTTP
routeConfigs:
- path: /a
serviceName: test-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 | 是否允许函数访问公网。取值如下:
|
tracingConfig | 否 | String | 是否开启链路追踪,取值如下:
|
role | 否 | 支持以下两种类型:
|
授予函数计算所需权限的RAM角色。
包含以下使用场景:
详细信息,请参见Role。
|
logConfig | 否 | 支持以下两种类型:
|
日志配置。函数产生的日志会写入到这里配置的Logstore。详细信息,请参见logConfig。 |
vpcConfig | 否 | 支持以下两种类型:
|
VPC配置,配置此参数后函数可以访问指定的VPC。详细信息,请参见vpcConfig。 |
nasConfig | 否 | 支持以下两种类型:
|
NAS配置,配置此参数后函数可以访问指定的NAS。详细信息,请参见nasConfig。 |
Role
Role
参数类型的取值如下:
- String:当参数类型选择使用String简单配置呈现时,
role
参数则以字符串的形式呈现,格式为acs:ram::xxx:role/test-fc-deploy-test-role
。 - Struct:当该参数类型选择使用Struct详细配置呈现时,
role
参数则以结构的形式呈现,role
内的参数配置如下所示:参数 是否必填 类型 描述 name 是 String 角色的名称。 policies 是 List 策略列表。 policies
当policies
表示策略列表时,列表中的元素支持string
和policy
结构体,该结构体如下所示:参数 是否必填 类型 参数描述 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 | 函数运行的语言环境。取值为nodejs6 、nodejs8 、nodejs10 、nodejs12 、nodejs14 、python2.7 、python3 、java8 、java11 、php7.2 、dotnetcore2.1 、go1 、custom 和custom-container 。
|
timeout | 否 | Number | 函数运行的超时时间,单位为秒,默认60秒。取值范围是[1,86400],单位为秒。函数超过这个时间后会被终止执行。 |
caPort | 否 | Number | Custom Runtime或Custom Container运行时HTTP Server的监听端口。 |
customContainerConfig | 否 | Struct | Custom Container运行时的相关配置,配置后函数可以使用自定义容器镜像执行函。详细信息,请参见customContainerConfig。 |
environmentVariables | 否 | List | 为函数设置的环境变量,可以在函数中获取环境变量的值。该参数属于Object格式。关于环境变量的详细信息,请参见环境变量。 |
initializationTimeout | 否 | Number | 初始化函数运行的超时时间,单位为秒,默认3秒。取值范围是[1,300],单位为秒。初始化函数超过这个时间后会被终止执行。 |
initializer | 否 | String | 初始化函数执行的入口,具体格式与语言相关,详细信息,请参见Initializer函数。 |
instanceConcurrency | 否 | Number | 单实例多并发。 |
instanceType | 否 | String | 函数实例类型。取值:
|
instanceLifecycleConfig | 否 | Struct | 扩展函数。详细信息,请参见instanceLifecycleConfig。 |
asyncConfiguration | 否 | Struct | 异步配置。详细信息,请参见asyncConfiguration。 |
layers | 否 | String | 层的ARN。 |
customContainerConfig
参数 | 是否必填 | 类型 | 描述 |
---|---|---|---|
image | 是 | String | 容器镜像仓库的地址。 |
command | 否 | String | 容器启动命令。 |
args | 否 | String | 容器启动参数。 |
accelerationType | 否 | String | 是否开启镜像加速,取值如下:
|
instanceID | 否 | String | 容器镜像服务企业版实例的ID。当容器镜像选择的是企业版实例时,您需要给容器镜像服务企业版添加实例ID,该实例的默认解析必须是服务所在的VPC网络地址。目前不支持PrivateZone产品定义域名解析。 |
instanceLifecycleConfig
参数 | 是否必填 | 类型 | 描述 |
---|---|---|---|
preFreeze | 否 | Struct | preFreeze函数。 |
preStop | 否 | Struct | preStop函数。 |
preFreeze
参数 | 是否必填 | 类型 | 描述 |
---|---|---|---|
handler | 是 | String | 函数入口。 |
timeout | 否 | Number | 超时时间。 |
asyncConfiguration
参数 | 是否必填 | 类型 | 参数描述 |
---|---|---|---|
maxAsyncEventAgeInSeconds | 否 | Number | 消息最大存活时长,默认值为172800。取值范围[1,2592000]。单位为秒。 |
maxAsyncRetryAttempts | 否 | Number | 异步调用失败后的最大重试次数,默认值为3。取值范围[0,8]。 |
statefulInvocation | 否 | Boolean | 是否开启有状态异步调用。取值如下:
|
destination | 否 | Struct | 异步调用目标的配置结构体。详细信息,请参见destination。 |
destination
参数 | 是否必填 | 类型 | 描述 |
---|---|---|---|
onSuccess | 否 | String | 成功时。 |
onFailure | 否 | String | 失败时。 |
triggers字段
triggers字段内的参数说明如下:
参数 | 是否必填 | 类型 | 描述 |
---|---|---|---|
name | 是 | String | 触发器的名称。 |
type | 是 | Enum | 触发器的类型。触发器的参数取值包含: |
role | 否 | String | 使用一个RAM角色的ARN为函数指定执行角色,事件源会使用该角色触发函数执行,请确保该角色有调用函数的权限。 |
qualifier | 否 | String | 服务的版本或别名。 |
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 | 是否启用该触发器。取值如下:
|
payload | 否 | String | 表示传入参数。 |
HTTP触发器
参数 | 是否必填 | 类型 | 描述 |
---|---|---|---|
authType | 是 | String | 鉴权类型。取值为anonymous 或function 。
|
methods | 是 | List | HTTP触发器支持的访问方法。支持的类型包含GET、POST、PUT、DELETE和HEAD。 |
MNS触发器
参数 | 是否必填 | 类型 | 描述 |
---|---|---|---|
topicName | 是 | String | MNS触发器的名称。 |
region | 否 | List | MNS触发器所在的地域,若不填,则默认和函数所在的地域一致。 |
notifyContentFormat | 否 | String | 推送给函数入参事件的格式,支持STREAM和JSON格式。 |
notifyStrategy | 否 | String | 消息服务MNS向Endpoint推送消息出现错误时的重试策略。取值如下:
|
filterTag | 否 | String | 描述该订阅中消息过滤的标签,当标签一致的消息才会被推送,不超过16个字符的字符串,默认不进行消息过滤,即默认不填写该字段。 |
CDN触发器
参数 | 是否必填 | 类型 | 描述 |
---|---|---|---|
eventName | 是 | String | CDN端触发函数执行的事件,创建后不可以更改。 |
eventVersion | 是 | String | CDN端触发函数执行事件的版本,创建后不可以更改。 |
notes | 是 | String | 备注信息。 |
filter | 是 | Struct | 过滤条件,包含至少一个过滤条件。详细信息,请参见filter。 |
filter
参数 | 是否必填 | 类型 | 描述 |
---|---|---|---|
domain | 是 | List | 过滤参数值的集合。 |
Tablestore触发器
参数 | 是否必填 | 类型 | 描述 |
---|---|---|---|
instanceName | 是 | String | 表格存储中的实例。 |
tableName | 是 | String | 表格存储中的表格。 |
表格存储触发器可以在表格存储中的数据更新时自动触发函数执行。
customDomains字段
customDomains字段内的参数说明如下:
参数 | 是否必填 | 类型 | 描述 |
---|---|---|---|
domainName | 是 | String | 域名。如果取值为auto ,系统则会默认分配域名。
|
protocol | 是 | String | 域名支持的协议类型。
|
routeConfigs | 是 | List | 路由表:定义域名访问时的路径到Function的映射。详细信息,请参见routeConfigs。 |
certConfig | 否 | Struct | HTTPS证书的配置信息。详细信息,请参见certConfig。 |
routeConfigs
参数 | 是否必填 | 类型 | 描述 |
---|---|---|---|
path | 是 | String | 路径。 |
serviceName | 否 | String | 服务的名称。 |
functionName | 否 | String | 函数的名称。 |
qualifier | 否 | String | 服务的版本。 |
certConfig
参数 | 是否必填 | 类型 | 描述 |
---|---|---|---|
certName | 否 | String | 证书的名称。 |
privateKey | 否 | String | 表示私钥。 |
certificate | 否 | String | 表示证书,如果是证书链,则需要依次填写多个证书。 |