前言
通过本组件,您可以简单快速的将阿里云函数计算项目部署到线上。
使用
最简使用方法
模版拉取:
s init python3-http
其中Yaml的默认配置为:
MyFunctionDemo:Component: fcProvider: alibabaProperties:Region: cn-hangzhouService:Name: ServerlessToolProjectDescription: 欢迎使用ServerlessToolFunction:Name: serverless_demo_python3_httpDescription: 这是一个Python3-HTTP的测试案例CodeUri: ./Handler: index.handlerMemorySize: 128Runtime: python3Timeout: 5Triggers:- Name: TriggerNameHttpType: HTTPParameters:AuthType: ANONYMOUSMethods:- GET- POST- PUTDomains:- Domain: AUTO
系统默认bootstrap内容:
测试模板对应关系
不同语言的Event函数模板:nodejs6,nodejs8,nodejs10,nodejs12,python27,python3,php72
不同语言的Http函数模板:nodejs6-http,nodejs8-http,nodejs10-http,nodejs12-http,python27-http,python3-http,php72-http
完整Yaml示例
MyFunction:Component: fcProvider: alibabaAccess: releaseProperties:Region: cn-huhehaoteService:Name: 服务名Description: 服务描述InternetAccess: 访问公网Log:LogStore: loghub中的logstore名称Project: loghub中的project名称Role: 授予函数计算所需权限的RAM roleVpc:SecurityGroupId: 安全组VSwitchIds:- 一个或多个VSwitch IDVpcId: VPC IDNas:UseId: userIDGroupId: groupIDMountPoints:- ServerAddr: adasdasdasMountDir: ./ssssssTags:- Key: 标签名Value: 标签值- Key: 标签名Value: 标签值Function: 函数名Name: 函数名Description: 函数描述# CodeUri: 本地路径# CodeUri:# Bucket: function code包的bucket name# Object: code zip包的object nameCodeUri:Bucket: function code包的bucket nameSrc: 本地路径Excludes:- path1- path2Includes:- path1- path2Handler: function执行的入口,具体格式和语言相关MemorySize: function的内存规格Runtime: function的运行环境Environment:- Key: EnvironmentkeyValue: EnvironmentValueTimeout: function运行的超时时间Initializer:Handler: 初始化 function 执行的入口,具体格式和语言相关Timeout: 初始化 function 运行的超时时间Triggers:- Name: OSSTriggerType: OSS # trigger typeParameters:Bucket: coco-superme # oss bucket nameEvents:- oss:ObjectCreated:*- oss:ObjectRemoved:DeleteObjectFilter:Prefix: source/Suffix: .pngQualifier: Prod # 版本(可选)- Name: TriggerNameTimerType: TimerParameters:CronExpression: '0 0 8 * * *'Enable: truePayload: 'awesome-fc-event-nodejs10'Qualifier: Prod # 版本(可选)- Name: TriggerNameHttpType: HTTP # trigger typeParameters:AuthType: ANONYMOUSInvocationRole: 使用一个 RAM 角色的 ARN 为函数指定执行角色Methods:- GET- POST- PUTDomains:- Domain: anycodes.cnProtocol:- HTTP- HTTPSCertConfig:CertName: 'CertName'PrivateKey: './certificates/privateKey.pem'Certificate: './certificates/certificate.pem'Routes:- Path: '/a'Qualifier: Prod # 版本(可选)- Path: '/a'Qualifier: Prod # 版本(可选)- Name: TriggerNameLogType: LogParameters:SourceConfig:Logstore: logstore1JobConfig:MaxRetryTime: 1TriggerInterval: 30LogConfig:Project: testlogLogstore: logstore2Enable: trueFunctionParameter: 日志服务将该配置内容作为函数 event, 当事件触发时InvocationRole: 使用一个 RAM 角色的 ARN 为函数指定执行角色Qualifier: Prod # 版本(可选)- Name: TriggerNameRDSType: RDS # trigger typeParameters:InstanceId: rm-12345799xyzSubscriptionObjects:- db1.table1Retry: 2Concurrency: 1EventFormat: jsonInvocationRole: 使用一个 RAM 角色的 ARN 为函数指定执行角色Qualifier: Prod # 版本(可选)- Name: TriggerNameMNSType: MNSTopic # trigger typeParameters:TopicName: test-topicRegion: cn-shanghaiNotifyContentFormat: JSONNotifyStrategy: BACKOFF_RETRYFilterTag: 描述了该订阅中消息过滤的标签InvocationRole: 使用一个 RAM 角色的 ARN 为函数指定执行角色Qualifier: Prod # 版本(可选)- Name: TriggerNameTableStoreType: TableStore # trigger typeParameters:InstanceName: test-instTableName: test-tblInvocationRole: 使用一个 RAM 角色的 ARN 为函数指定执行角色Qualifier: Prod # 版本(可选)- Name: TriggerNameCDNType: CDN # trigger typeParameters:EventName: LogFileCreatedEventVersion: '1.0.0'Notes: cdn events trigger testFilter:Domain:- 'www.taobao.com'- 'www.tmall.com'InvocationRole: 使用一个 RAM 角色的 ARN 为函数指定执行角色Qualifier: Prod # 版本(可选)
详细使用方法
| 参数名 | 必填 | 类型 | 参数描述 | | —- | —- | —- | —- |
| Region | true | Enum | 地域 |
| Service | false | Struct | 服务 |
| Function | false | Struct | 函数 |
Region
参数取值:cn-beijing, cn-hangzhou, cn-shanghai, cn-qingdao, cn-zhangjiakou, cn-huhehaote, cn-shenzhen, cn-chengdu, cn-hongkong, ap-southeast-1, ap-southeast-2, ap-southeast-3, ap-southeast-5, ap-northeast-1, eu-central-1, eu-west-1, us-west-1, us-east-1, ap-south-1, `cn-zhangjiakou-na62-a01
Service
| 参数名 | 必填 | 类型 | 参数描述 | | —- | —- | —- | —- |
| Name | false | String | service名称 |
| Description | false | String | service的简短描述 |
| InternetAccess | false | Boolean | 设为true让function可以访问公网 |
| Role | false | String | 授予函数计算所需权限的RAM role, 使用场景包含 1. 把 function产生的 log 发送到用户的 logstore 中 2. 为function 在执行中访问其它云资源生成 token |
| Log | false | Struct | log配置,function产生的log会写入这里配置的logstore |
| Vpc | false | Struct | vpc配置, 配置后function可以访问指定VPC |
| Nas | false | Struct | NAS配置, 配置后function可以访问指定NAS |
| Tag | false | List | 标签 |
Log
| 参数名 | 必填 | 类型 | 参数描述 | | —- | —- | —- | —- |
| LogStore | false | String | loghub中的logstore名称 |
| Project | false | String | loghub中的project名称 |
Vpc
| 参数名 | 必填 | 类型 | 参数描述 | | —- | —- | —- | —- |
| SecurityGroupId | false | String | 安全组ID |
| VSwitchIds | false | String | 一个或多个VSwitch ID |
| VpcId | false | String | VPC ID |
Nas
| 参数名 | 必填 | 类型 | 参数描述 | | —- | —- | —- | —- |
| UserId | false | String | userID |
| GroupId | false | String | groupID |
| MountPoints | false | List | 挂载点 |
其中MountPoints为:
| 参数名 | 必填 | 类型 | 参数描述 | | —- | —- | —- | —- |
| ServerAddr | false | String | NAS 服务器地址 |
| MountDir | false | String | 本地挂载目录 |
Tag
| 参数名 | 必填 | 类型 | 参数描述 | | —- | —- | —- | —- |
| Key | false | String | 标签名 |
| Value | false | String | 标签值 |
Function
| 参数名 | 必填 | 类型 | 参数描述 | | —- | —- | —- | —- |
| Name | false | String | function名称 |
| Description | false | String | function的简短描述 |
| MemorySize | false | String | function的内存规格 |
| CodeUri | false(默认为./) | String/Struct | 代码位置 |
| Handler | true | String | function执行的入口,具体格式和语言相关 |
| Runtime | true | String | function的运行环境 |
| Initializer | false | Struct | 初始化方法 |
| Environment | false | Struct | 环境变量 |
| Timeout | false | String | function运行的超时时间 |
| Triggers | false | List | 触发器 |
Environment
| 参数名 | 必填 | 类型 | 参数描述 | | —- | —- | —- | —- |
| Key | false | String | 环境Key |
| Value | false | String | 环境Value |
CodeUri
- 直接填写路径
- | 参数名 | 必填 | 类型 | 参数描述 | | —- | —- | —- | —- |
| Bucket | false | String | function code包的bucket name |
| Object | false | String | code zip包的object name |
| Exclude | false | List | 除去路径 |
| Include | false | List | 包括路径 |
- | 参数名 | 必填 | 类型 | 参数描述 | | —- | —- | —- | —- |
| Bucket | false | String | function code包的bucket name |
| Src | false | String | 本地路径 |
| Exclude | false | List | 除去路径 |
| Include | false | List | 包括路径 |
Initializer
| 参数名 | 必填 | 类型 | 参数描述 | | —- | —- | —- | —- |
| Handler | false | String | 初始化 function 执行的入口,具体格式和语言相关 |
| Timeout | false | String | 初始化 function 运行的超时时间 |
Triggers
| 参数名 | 必填 | 类型 | 参数描述 | | —- | —- | —- | —- |
| Name | true | String | 触发器名称 |
| Type | true | Enum | 触发器类型 |
| Parameters | true | Struct | 参数内容 |
Type
参数取值:OSS, CDN, MNSTopici, TableStore, Timer, HTTP, RDS, LOG
Parameters[HTTP]
| 参数名 | 必填 | 类型 | 参数描述 | | —- | —- | —- | —- |
| AuthType | true | List | 鉴权类型,可选值:ANONYMOUS、FUNCTION |
| Methods | true | List | HTTP 触发器支持的访问方法 |
| Domains | false | String | 参数内容 |
| Enable | false | String | 表示是否启用该触发器。 |
| InvocationRole | false | String | 使用一个 RAM 角色的 ARN 为函数指定执行角色,事件源会使用该角色触发函数执行,请确保该角色有调用函数的权限 |
| Qualifier | false | String | service 版本 |
AuthType
枚举:ANONYMOUS,FUNCTION
Methods
枚举:GET,POST,PUT,DELETE,HEAD
Domains
- | 参数名 | 必填 | 类型 | 参数描述 | | —- | —- | —- | —- |
| Domain | false | String | 域名 |
- | 参数名 | 必填 | 类型 | 参数描述 | | —- | —- | —- | —- |
| Domain | false | String | 域名 |
| Protocol | false | List(HTTP,HTTPS) | 协议 |
| CertConfig | false | Struct | 域名证书 |
| Routes | false | Struct | 路径配置 |
Parameters[OSS]
| 参数名 | 必填 | 类型 | 参数描述 | | —- | —- | —- | —- |
| Bucket | true | String | 存储桶名字 |
| Events | true | List | 事件 |
| Filter | true | Struct | 条件 |
| Qualifier | false | String | Prod # 版本(可选) |
其中Filter:
| 参数名 | 必填 | 类型 | 参数描述 | | —- | —- | —- | —- |
| Prefix | true | String | 前缀 |
| Suffix | true | String | 后缀 |
Parameters[Timer]
| 参数名 | 必填 | 类型 | 参数描述 | | —- | —- | —- | —- |
| CronExpression | true | String | 触发事件表达式,例如’0 0 8 *’ |
| Enable | false(默认是true) | Boolean | 是否开启 |
| Payload | false | Struct | 触发时传入的参数 |
| Qualifier | false | String | Prod # 版本(可选) |
Parameters[Log]
| 参数名 | 必填 | 类型 | 参数描述 | | —- | —- | —- | —- |
| SourceConfig | true | String | Source配置 |
| JobConfig | true | Struct | Job配置 |
| LogConfig | true | Struct | Log配置 |
| InvocationRole | false | String | 使用一个 RAM 角色的 ARN 为函数指定执行角色 |
| FunctionParameter | false | String | 日志服务将该配置内容作为函数 event, 当事件触发时 |
| Enable | false(默认是true) | Boolean | 是否开启 |
| Qualifier | false | String | Prod # 版本(可选) |
其中SourceConfig:
| 参数名 | 必填 | 类型 | 参数描述 | | —- | —- | —- | —- |
| Logstore | true | String | 触发器会定时从该 Logstore 订阅数据到函数计算。 |
其中JobConfig:
| 参数名 | 必填 | 类型 | 参数描述 | | —- | —- | —- | —- |
| MaxRetryTime | true | String | 表示日志服务触发函数执行时,如果遇到错误,所允许的最大尝试次数 |
| TriggerInterval | true | String | 表示日志服务触发函数执行的间隔 |
其中LogConfig:
| 参数名 | 必填 | 类型 | 参数描述 | | —- | —- | —- | —- |
| Project | true | String | 表示日志服务 Project 名称 |
| Logstore | true | String | 表示触发函数执行时,产生的日志会记录到该 Logstore |
| FunctionParameter | false | String | 当事件触发时,会连同它的内容一起发送给函数 |
Parameters[RDS]
| 参数名 | 必填 | 类型 | 参数描述 | | —- | —- | —- | —- |
| InstanceId | true | String | 表示日志服务 Project 名称 |
| SubscriptionObjects | false | String | 订阅对象,当前支持到表级别,只有这些表的更新才会触发函数执行 |
| Retry | false | String | 重试次数,可选值:[0,3], 默认值为3。 |
| Concurrency | false | String | 调用并发量,可选值:[1,5], 默认值为1 |
| EventFormat | false | String | event格式,可选值:json, protobuf, 默认值为 protobuf。 |
| InvocationRole | false | String | 使用一个 RAM 角色的 ARN 为函数指定执行角色,事件源会使用该角色触发函数执行,请确保该角色有调用函数的权限。 |
| Qualifier | false | String | Prod # 版本(可选) |
Parameters[MNSTopic]
| 参数名 | 必填 | 类型 | 参数描述 | | —- | —- | —- | —- |
| TopicName | true | String | mns topic的名字 |
| Region | false | String | mns topic 所在的 region,如果不填,默认为和函数一样的 region |
| NotifyContentFormat | false | String | 推送给函数入参 event 的格式,可选值:STREAM, JSON, 默认值为: STREAM。 |
| NotifyStrategy | false | String | 调用函数的重试策略,可选值:BACKOFF_RETRY, EXPONENTIAL_DECAY_RETRY, 默认值为: BACKOFF_RETRY |
| FilterTag | false | String | 描述了该订阅中消息过滤的标签(标签一致的消息才会被推送),不超过 16 个字符的字符串,默认不进行消息过滤,即默认不填写该字段。 |
| InvocationRole | false | String | 使用一个 RAM 角色的 ARN 为函数指定执行角色,事件源会使用该角色触发函数执行,请确保该角色有调用函数的权限。 |
| Qualifier | false | String | Prod # 版本(可选) |
Parameters[TableStore]
| 参数名 | 必填 | 类型 | 参数描述 | | —- | —- | —- | —- |
| InstanceName | true | String | 表格存储实例的名字 |
| TableName | true | String | 实例中的表名 |
| InvocationRole | false | String | 使用一个 RAM 角色的 ARN 为函数指定执行角色,事件源会使用该角色触发函数执行,请确保该角色有调用函数的权限。 |
| Qualifier | false | String | Prod # 版本(可选) |
Parameters[CDN]
| 参数名 | 必填 | 类型 | 参数描述 | | —- | —- | —- | —- |
| EventName | true | String | 为 CDN 端触发函数执行的事件,一经创建不能更改 |
| EventVersion | true | String | 为 CDN 端触发函数执行事件的版本,一经创建不能更改 |
| Notes | true | String | 备注信息 |
| Filter | true | Struct | 过滤器(至少需要一个过滤器) |
| InvocationRole | false | String | 使用一个 RAM 角色的 ARN 为函数指定执行角色,事件源会使用该角色触发函数执行,请确保该角色有调用函数的权限。 |
| Qualifier | false | String | Prod # 版本(可选) |
其中Filter:
| 参数名 | 必填 | 类型 | 参数描述 | | —- | —- | —- | —- |
| Domain | true | List | 是个字符串数组且必填,代表过滤参数值的集合。 |
