前言

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

使用

最简使用方法

模版拉取:

  1. s init python3-http

其中Yaml的默认配置为:

  1. MyFunctionDemo:
  2. Component: fc
  3. Provider: alibaba
  4. Properties:
  5. Region: cn-hangzhou
  6. Service:
  7. Name: ServerlessToolProject
  8. Description: 欢迎使用ServerlessTool
  9. Function:
  10. Name: serverless_demo_python3_http
  11. Description: 这是一个Python3-HTTP的测试案例
  12. CodeUri: ./
  13. Handler: index.handler
  14. MemorySize: 128
  15. Runtime: python3
  16. Timeout: 5
  17. Triggers:
  18. - Name: TriggerNameHttp
  19. Type: HTTP
  20. Parameters:
  21. AuthType: ANONYMOUS
  22. Methods:
  23. - GET
  24. - POST
  25. - PUT
  26. Domains:
  27. - Domain: AUTO

系统默认bootstrap内容:

测试模板对应关系
不同语言的Event函数模板:nodejs6nodejs8nodejs10nodejs12python27python3php72
不同语言的Http函数模板:nodejs6-httpnodejs8-httpnodejs10-httpnodejs12-httppython27-httppython3-httpphp72-http

完整Yaml示例

  1. MyFunction:
  2. Component: fc
  3. Provider: alibaba
  4. Access: release
  5. Properties:
  6. Region: cn-huhehaote
  7. Service:
  8. Name: 服务名
  9. Description: 服务描述
  10. InternetAccess: 访问公网
  11. Log:
  12. LogStore: loghub中的logstore名称
  13. Project: loghub中的project名称
  14. Role: 授予函数计算所需权限的RAM role
  15. Vpc:
  16. SecurityGroupId: 安全组
  17. VSwitchIds:
  18. - 一个或多个VSwitch ID
  19. VpcId: VPC ID
  20. Nas:
  21. UseId: userID
  22. GroupId: groupID
  23. MountPoints:
  24. - ServerAddr: adasdasdas
  25. MountDir: ./ssssss
  26. Tags:
  27. - Key: 标签名
  28. Value: 标签值
  29. - Key: 标签名
  30. Value: 标签值
  31. Function: 函数名
  32. Name: 函数名
  33. Description: 函数描述
  34. # CodeUri: 本地路径
  35. # CodeUri:
  36. # Bucket: function code包的bucket name
  37. # Object: code zip包的object name
  38. CodeUri:
  39. Bucket: function code包的bucket name
  40. Src: 本地路径
  41. Excludes:
  42. - path1
  43. - path2
  44. Includes:
  45. - path1
  46. - path2
  47. Handler: function执行的入口,具体格式和语言相关
  48. MemorySize: function的内存规格
  49. Runtime: function的运行环境
  50. Environment:
  51. - Key: Environmentkey
  52. Value: EnvironmentValue
  53. Timeout: function运行的超时时间
  54. Initializer:
  55. Handler: 初始化 function 执行的入口,具体格式和语言相关
  56. Timeout: 初始化 function 运行的超时时间
  57. Triggers:
  58. - Name: OSSTrigger
  59. Type: OSS # trigger type
  60. Parameters:
  61. Bucket: coco-superme # oss bucket name
  62. Events:
  63. - oss:ObjectCreated:*
  64. - oss:ObjectRemoved:DeleteObject
  65. Filter:
  66. Prefix: source/
  67. Suffix: .png
  68. Qualifier: Prod # 版本(可选)
  69. - Name: TriggerNameTimer
  70. Type: Timer
  71. Parameters:
  72. CronExpression: '0 0 8 * * *'
  73. Enable: true
  74. Payload: 'awesome-fc-event-nodejs10'
  75. Qualifier: Prod # 版本(可选)
  76. - Name: TriggerNameHttp
  77. Type: HTTP # trigger type
  78. Parameters:
  79. AuthType: ANONYMOUS
  80. InvocationRole: 使用一个 RAM 角色的 ARN 为函数指定执行角色
  81. Methods:
  82. - GET
  83. - POST
  84. - PUT
  85. Domains:
  86. - Domain: anycodes.cn
  87. Protocol:
  88. - HTTP
  89. - HTTPS
  90. CertConfig:
  91. CertName: 'CertName'
  92. PrivateKey: './certificates/privateKey.pem'
  93. Certificate: './certificates/certificate.pem'
  94. Routes:
  95. - Path: '/a'
  96. Qualifier: Prod # 版本(可选)
  97. - Path: '/a'
  98. Qualifier: Prod # 版本(可选)
  99. - Name: TriggerNameLog
  100. Type: Log
  101. Parameters:
  102. SourceConfig:
  103. Logstore: logstore1
  104. JobConfig:
  105. MaxRetryTime: 1
  106. TriggerInterval: 30
  107. LogConfig:
  108. Project: testlog
  109. Logstore: logstore2
  110. Enable: true
  111. FunctionParameter: 日志服务将该配置内容作为函数 event, 当事件触发时
  112. InvocationRole: 使用一个 RAM 角色的 ARN 为函数指定执行角色
  113. Qualifier: Prod # 版本(可选)
  114. - Name: TriggerNameRDS
  115. Type: RDS # trigger type
  116. Parameters:
  117. InstanceId: rm-12345799xyz
  118. SubscriptionObjects:
  119. - db1.table1
  120. Retry: 2
  121. Concurrency: 1
  122. EventFormat: json
  123. InvocationRole: 使用一个 RAM 角色的 ARN 为函数指定执行角色
  124. Qualifier: Prod # 版本(可选)
  125. - Name: TriggerNameMNS
  126. Type: MNSTopic # trigger type
  127. Parameters:
  128. TopicName: test-topic
  129. Region: cn-shanghai
  130. NotifyContentFormat: JSON
  131. NotifyStrategy: BACKOFF_RETRY
  132. FilterTag: 描述了该订阅中消息过滤的标签
  133. InvocationRole: 使用一个 RAM 角色的 ARN 为函数指定执行角色
  134. Qualifier: Prod # 版本(可选)
  135. - Name: TriggerNameTableStore
  136. Type: TableStore # trigger type
  137. Parameters:
  138. InstanceName: test-inst
  139. TableName: test-tbl
  140. InvocationRole: 使用一个 RAM 角色的 ARN 为函数指定执行角色
  141. Qualifier: Prod # 版本(可选)
  142. - Name: TriggerNameCDN
  143. Type: CDN # trigger type
  144. Parameters:
  145. EventName: LogFileCreated
  146. EventVersion: '1.0.0'
  147. Notes: cdn events trigger test
  148. Filter:
  149. Domain:
  150. - 'www.taobao.com'
  151. - 'www.tmall.com'
  152. InvocationRole: 使用一个 RAM 角色的 ARN 为函数指定执行角色
  153. 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

枚举:ANONYMOUSFUNCTION

Methods

枚举:GETPOSTPUTDELETEHEAD

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 | 是个字符串数组且必填,代表过滤参数值的集合。 |