1 Star 0 Fork 0

Serverless Devs Registry / flask

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README
MIT

阿里云 Flask 框架组件

快速体验

  • 初始化项目:s init devsapp/start-flask
  • 进入项目后部署:s deploy
  • 部署过程中可能需要阿里云密钥的支持,部署完成之后会获得到临时域名可供测试

动画演示:

快速导航

示例Yaml

edition: 1.0.0          #  命令行YAML规范版本,遵循语义化版本(Semantic Versioning)规范
name: flaskApp          #  项目名称
access: aliyun-release  #  秘钥别名

services:
  framework-test:                 #  服务名称
    component: flask  # 组件名称
    props:
      region: cn-shenzhen         # 阿里云函数计算所支持的地区
      service:
        name: web-flask   # 服务名
        description: Flask 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: flask # 函数名
        description: Flask 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: '/*'   

Yaml字段说明

字段解析

参数名 必填 类型 参数描述
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

service字段
参数名 必填 类型 参数描述
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

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

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

vpcConfig参数为简单配置是,可以是:auto

vpcConfig参数为结构时,可以参考:

参数名 必填 类型 参数描述
securityGroupId False String 安全组ID
vSwitchIds False List 一个或多个VSwitch ID
vpcId False String VPC ID
nasConfig

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 函数计算目录
function字段
参数名 必填 类型 参数描述
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 环境变量
code
参数名 必填 类型 参数描述
src True String 代码路径
excludes False List 除去某些文件
customContainerConfig
参数名 必填 类型 参数描述
image False String 仓库地址
command False String 指令
args False String 参数
environmentVariables

Object格式,例如:

TempKey: tempValue
triggers字段
参数名 必填 类型 参数描述
name True String 触发器名称
type True Enum 触发器类型
role False String 使用一个 RAM 角色的 ARN 为函数指定执行角色,事件源会使用该角色触发函数执行,请确保该角色有调用函数的权限
sourceArn False String 资源Arn
config True Struct 触发器配置

type目前支持:http

Http触发器

参数名 必填 类型 参数描述
authType True String 鉴权类型,可选值:anonymous、function
methods True List HTTP 触发器支持的访问方法,可选值:GET、POST、PUT、DELETE、HEAD

customDomains字段

参数名 必填 类型 参数描述
domainName True String 域名,如果是auto取值,系统则会默认分配域名
protocol True String 协议,取值:HTTP, HTTPS, HTTP, HTTPS
routeConfigs True List 路由
certConfig False Struct 域名证书

相关权限可以参考权限文档

certConfig

参数名 必填 类型 参数描述
certName False String 名称
privateKey False String 表示私钥
certificate False String 表示证书

routeConfigs

参数名 必填 类型 参数描述
path True String 路径
serviceName False String 服务名
functionName False String 函数名

额外说明

该框架部署会支持两种模式:NAS+ContainerContainer

NAS+Container模式

该模式将会采用Container方式进行项目的部署,同时代码将会上传到NAS中,在该模式中可以认为函数计算是一个纯粹的运行环境,而所有的业务代码均被放到NAS中。

在配置Yaml的时候,推荐在command填写启动的命令,例如'["python3"]'args写启动的参数,以案例start-flask 为例,可以是:'["/mnt/auto/flask/index.py"]'

此处需要额外注意:

  • args的内容是:'["/mnt/auto/flask/index.py"]',要注意其中的路径:NAS挂载的函数计算本地目录(即fcDir目录) + 函数名为默认的基础路径,例如fcDir目录为/mnt/hello,此时函数名为test,此时基础路径为/mnt/hello/test

Container模式

该模式将会采用Container方式进行项目的部署,代码将会被放到镜像中,在该模式下,默认不会使用NAS。

在配置Yaml的时候,推荐在commandargs填写启动脚本的命令,以案例start-flask 为例,可以是:'[./start.sh"]''["./index.py"]'

模式对比

模式 优势 劣势 使用方法
NAS+Container 在一定程度上可以实现代码的零改造,包括部分缓存到当前项目目录下的行为,或者上传文件持久化到当前目录下的行为,都是可以支持的; 由于代码等存储到了NAS,所以函数计算所具备的灰度能力没办法直接使用; 【默认模式】也可以通过s cli fc-default set web-framework nas指定
Container 代码和环境都会放在函数计算的容器中,相对来说可以更好的支持灰度发布; 由于代码被放入了镜像中,所以代码中涉及到当前目录缓存、持久化数据等情况,可能没办法更好的支持(因为实例会被释放),当代码中有缓存当前目录或者持久化数据,文件到当前目录的时候,需要进行代码的改造; 可以通过s cli fc-default set web-framework container指定
MIT License Copyright (c) 2021 Serverless Devs Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

简介

阿里云函数计算Flask组件 展开 收起
TypeScript 等 2 种语言
MIT
取消

发行版 (7)

全部

贡献者

全部

近期动态

加载更多
不能加载更多了
1
https://gitee.com/devsapp/flask.git
git@gitee.com:devsapp/flask.git
devsapp
flask
flask
master

搜索帮助