s init devsapp/start-tornado
s deploy
动画演示:
edition: 1.0.0 # 命令行YAML规范版本,遵循语义化版本(Semantic Versioning)规范
name: tornadoApp # 项目名称
access: aliyun-release # 秘钥别名
services:
framework-test: # 服务名称
component: tornado # 组件名称
props:
region: cn-shenzhen # 阿里云函数计算所支持的地区
service:
name: web-tornado # 服务名
description: Tornado framework service # 所在服务描述
# logConfig: auto # 日志配置,可以是auto
# logConfig:
# logStore: test # loghub中的logstore名称
# project: test # loghub中的project名称
# role: auto # 角色
# role:
# name: test # 角色名
# statement: # 角色授权 statement,配置后不生效 service 不生效, statement 和 service 必填其一
# - Effect: Deny # Effect设置,同意或拒绝
# Action: sts:AssumeRole # 行为,动作
# Principal: Principal
function:
name: tornado # 函数名
description: Tornado framework function # 函数描述
# customContainerConfig: # 自定义镜像配置
# image: registry.cn-shenzhen.aliyuncs.com/test-wss/nodejs12:v0.1 # 镜像仓库地址
# command: '["node", "index.js"]' # 启动指令
# args: '["--port", "9000"]' # 启动参数
caPort: 9000 # 监听端口
code: # 代码包配置
src: ./src # 本地路径
excludes: # ignore文件
- package-lock.json
# environmentVariables: # 环境变量配置
# test: demo
trigger: # 触发器配置
name: httpTrigger # 触发器名称
type: http # 触发器类型,只支持http
config: # 触发器详情
authType: anonymous # 权限配置
methods: # 请求方法
- GET
- POST
- PUT
customDomains: # 自定义域名配置
- domainName: auto # 自动获取域名,*.devsapp.cn
protocol: HTTP # 协议
routeConfigs: # 路径配置
- path: '/*'
参数名 | 必填 | 类型 | 参数描述 |
---|---|---|---|
region | True | Enum | 地域 |
service | True | Struct | 服务 |
function | True | Struct | 函数 |
triggers | True | Struct | 触发器 |
customDomains | True | Struct | 自定义域名 |
地区目前支持: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
参数名 | 必填 | 类型 | 参数描述 |
---|---|---|---|
name | True | String | service名称 |
description | True | String | Service的简短描述 |
internetAccess | False | Boolean | 设为true让function可以访问公网 |
tracingConfig | False | String | 链路追踪,可取值:Enable、Disable |
role | False | String[简单配置]/Struct[详细配置] | 授予函数计算所需权限的RAM role, 使用场景包含 1. 把 function产生的 log 发送到用户的 logstore 中 2. 为function 在执行中访问其它云资源生成 token |
logConfig | False | Enum[简单配置]/Struct[详细配置] | log配置,function产生的log会写入这里配置的logstore |
vpcConfig | False | Enum[简单配置]/Struct[详细配置] | VPC配置, 配置后function可以访问指定VPC |
nasConfig | False | Enum[简单配置]/Struct[详细配置] | NAS配置, 配置后function可以访问指定NAS |
当role
参数为字符串时,可以是:acs:ram::xxx:role/qianfeng-fc-deploy-test-role
当role
参数为结构时,可以参考:
参数名 | 必填 | 类型 | 参数描述 |
---|---|---|---|
name | True | String | 角色名 |
policies | True | List | 策略列表 |
例如:
role:
name: roleName
policies:
- AliyunOSSFullAccess
- name: myPolicy
description: custom policy
statement:
- Effect: Allow
Action:
- log:ListProject
Resource:
- acs:log:*:*:project/*
当logConfig
参数为简单配置是,可以是:auto
当logConfig
参数为结构时,可以参考:
参数名 | 必填 | 类型 | 参数描述 |
---|---|---|---|
logStore | False | String | loghub中的logstore名称 |
project | False | String | loghub中的project名称 |
enableRequestMetrics | False | Boolean | RequestMetrics开关,取值true /false
|
enableInstanceMetrics | False | Boolean | InstanceMetrics开关,取值true /false
|
当vpcConfig
参数为简单配置是,可以是:auto
当vpcConfig
参数为结构时,可以参考:
参数名 | 必填 | 类型 | 参数描述 |
---|---|---|---|
securityGroupId | False | String | 安全组ID |
vSwitchIds | False | List | 一个或多个VSwitch ID |
vpcId | False | String | VPC ID |
当nasConfig
参数为简单配置是,可以是:auto
当nasConfig
参数为结构时,可以参考:
参数名 | 必填 | 类型 | 参数描述 |
---|---|---|---|
mountPoints | False | List[多目录配置] | 目录配置 |
userId | False | String | userID, 默认为10003 |
groupId | False | String | groupID, 默认为10003 |
####### mountPoints
参数名 | 必填 | 类型 | 参数描述 |
---|---|---|---|
serverAddr | False | String | NAS 服务器地址 |
nasDir | False | String | NAS目录 |
fcDir | False | String | 函数计算目录 |
参数名 | 必填 | 类型 | 参数描述 |
---|---|---|---|
name | True | String | function名称 |
description | False | String | function的简短描述 |
timeout | False | Number | function运行的超时时间 |
code | True | Object | 代码路径 |
caPort | False | Number | CustomContainer/Runtime指定端口 |
customContainerConfig | False | Struct | 自定义镜像配置 |
environmentVariables | False | List | 环境变量 |
参数名 | 必填 | 类型 | 参数描述 |
---|---|---|---|
src | True | String | 代码路径 |
excludes | False | List | 除去某些文件 |
参数名 | 必填 | 类型 | 参数描述 |
---|---|---|---|
image | False | String | 仓库地址 |
command | False | String | 指令 |
args | False | String | 参数 |
Object格式,例如:
TempKey: tempValue
参数名 | 必填 | 类型 | 参数描述 |
---|---|---|---|
name | True | String | 触发器名称 |
type | True | Enum | 触发器类型 |
role | False | String | 使用一个 RAM 角色的 ARN 为函数指定执行角色,事件源会使用该角色触发函数执行,请确保该角色有调用函数的权限 |
sourceArn | False | String | 资源Arn |
config | True | Struct | 触发器配置 |
type目前支持:http
参数名 | 必填 | 类型 | 参数描述 |
---|---|---|---|
authType | True | String | 鉴权类型,可选值:anonymous、function |
methods | True | List | HTTP 触发器支持的访问方法,可选值:GET、POST、PUT、DELETE、HEAD |
参数名 | 必填 | 类型 | 参数描述 |
---|---|---|---|
domainName | True | String | 域名,如果是auto取值,系统则会默认分配域名 |
protocol | True | String | 协议,取值:HTTP , HTTPS , HTTP, HTTPS
|
routeConfigs | True | List | 路由 |
certConfig | False | Struct | 域名证书 |
相关权限可以参考权限文档
参数名 | 必填 | 类型 | 参数描述 |
---|---|---|---|
certName | False | String | 名称 |
privateKey | False | String | 表示私钥 |
certificate | False | String | 表示证书 |
参数名 | 必填 | 类型 | 参数描述 |
---|---|---|---|
path | True | String | 路径 |
serviceName | False | String | 服务名 |
functionName | False | String | 函数名 |
该框架部署会支持两种模式:NAS+Container
与Container
该模式将会采用Container方式进行项目的部署,同时代码将会上传到NAS中,在该模式中可以认为函数计算是一个纯粹的运行环境,而所有的业务代码均被放到NAS中。
在配置Yaml的时候,推荐在command
填写启动的命令,例如'["python3"]'
,args
写启动的参数,以案例start-tornado 为例,可以是:'["/mnt/auto/tornado/index.py"]'
此处需要额外注意:
'["/mnt/auto/tornado/index.py"]'
,要注意其中的路径:NAS挂载的函数计算本地目录(即fcDir目录)
+ 函数名
为默认的基础路径,例如fcDir
目录为/mnt/hello
,此时函数名为test
,此时基础路径为/mnt/hello/test
该模式将会采用Container方式进行项目的部署,代码将会被放到镜像中,在该模式下,默认不会使用NAS。
在配置Yaml的时候,推荐在command
和args
填写启动脚本的命令,以案例start-tornado 为例,可以是:'[./start.sh"]'
和'["./index.py"]'
模式 | 优势 | 劣势 | 使用方法 |
---|---|---|---|
NAS+Container | 在一定程度上可以实现代码的零改造,包括部分缓存到当前项目目录下的行为,或者上传文件持久化到当前目录下的行为,都是可以支持的; | 由于代码等存储到了NAS,所以函数计算所具备的灰度能力没办法直接使用; | 【默认模式】也可以通过s cli fc-default set web-framework nas 指定 |
Container | 代码和环境都会放在函数计算的容器中,相对来说可以更好的支持灰度发布; | 由于代码被放入了镜像中,所以代码中涉及到当前目录缓存、持久化数据等情况,可能没办法更好的支持(因为实例会被释放),当代码中有缓存当前目录或者持久化数据,文件到当前目录的时候,需要进行代码的改造; | 可以通过s cli fc-default set web-framework container 指定 |
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。