Skip to content

Latest commit

 

History

History
289 lines (241 loc) · 8.02 KB

File metadata and controls

289 lines (241 loc) · 8.02 KB
title description position category
Pacakge 模型 - Parameters参数
Pacakge 发布
5
开发包模型

ParametersUI规范

默认数据类型

string

完整的描述为

region:
  title: 地域
  type: string
  default: cn-hangzhou
  description: 创建应用所在的地区
  enum:
    - 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

enum代表枚举值,用户无需手动输入,直接选择

  • 在cli 的表现形式为:

  • 在网页端表现形式为

boolean

完整的描述为

internetAccess:
  type: boolean
  title: 允许公网访问
  description: 配置服务中的函数是否可以访问互联网
  default: true
  • 在 cli 的表现形式为:

  • 在网页端表现形式为

secret

完整的描述为

secret:
  type: secret
  title: 应用管理员密码
  description: 字母、数字、下划线,长度8-30位
  default: 12345678
  • 在 cli 的表现形式为:

  • 在网页端表现形式为

自定义UI

自定义UI主要用户在web端,用户能够方便的进行操作。一般以x-开头

x-bucket

用于oss bucket选择

bucketName:
  title: OSS存储桶名
  type: string
  default: ""
  description: OSS存储桶名(注意和函数同地域)
  x-bucket:
    dependency:
      - region # 依赖其他输入字段region

字段描述
字段名 类型 描述
dependency list<string> 依赖字段

x-role

用于角色的选择

triggerRoleArn:
  title: 触发器RAM角色ARN
  type: string
  default: ''
  pattern: '^acs:ram::[0-9]*:role/.*$'
  description: OSS使用此角色来发送事件通知来调用函数
  required: true
  x-role:
    name: aliyunosseventnotificationrole # 角色名
    service: OSS # 服务账号
    authorities:
      - AliyunFCInvocationAccess

pattern代表正则,表示当前字段的值需要匹配该正则

字段描述
字段名 类型 描述
name string 系统角色名
service string 服务账号,现在支持的系统账号: OSS,FC,LOG
authorities list<string> 系统策略

x-nas

用于 NAS挂载点, VPC, 交换机, 安全组 的选择

mountPointsServerAddr:
  title: NAS挂载点地址
  type: string
  default: ""
  description: NAS 挂载点地址,可以登录 <a href="https://nasnext.console.aliyun.com" target="_blank">NAS控制台</a> 查看
  x-nas:
    denpendency:
      - region
字段描述
字段名 类型 描述
dependency list<string> 依赖字段

注意,x-nas 配合 'vpcId', 'vswitchId', 'securityGroupId' 字段使用

vpcId:
  title: VPC Id
  type: string
  default: ""
  description: NAS 挂载点所在 VPC ID, 例如 vpc-bp1lynmabizqdgt4308dt
vswitchId:
  title: 交换机 Id
  type: string
  default: ""
  description: NAS 挂载点所在虚拟交换机VSW ID, 交换机最好在 FC 支持的可用区
securityGroupId:
  title: 安全组 Id
  type: string
  default: ""
  description: 登录 <a href="https://ecs.console.aliyun.com/#/securityGroup/region/cn-hangzhou" target="_blank">安全组</a> 查看, 通常默认创建的空安全组即可(注意和上面地域相同), 例如 sg-bp1cd2w08t3dy7nhrvtx

x-acr

用于阿里云容器镜像服务镜像的选择和创建

acrRegistry:
    title: 镜像仓库
    type: string
    examples: ['registry.cn-hangzhou.aliyuncs.com/fc-demo/custom-nodejs14-event-function:v0.1']
    description: 镜像仓库地址,需要在 https://cr.console.aliyun.com/ 中开通服务、创建仓库以及设置访问凭证
    x-acr:
      type: select

字段描述
字段名 类型 描述
type String select:选择镜像, tag: 创建Tag

tips小贴士

随机后缀名${default-suffix}

用于字段生成一个随机后缀名,以保证每次初始化时候都可以得到不同的值。比如服务名称等。

serviceName:
  title: 服务名
  type: string
  default: web-framework-${default-suffix}
  pattern: "^[a-zA-Z_][a-zA-Z0-9-_]{0,127}$"
  description: 服务名称,只能包含字母、数字、下划线和中划线。不能以数字、中划线开头。长度在 1-128 之间
  • 在cli 的表现形式为:

  • 在网页端表现形式为

模版引擎

应用初始化时,使用art-template进行模版解析

比如:编写应用模板时,用户可以自己指定vpc配置,如果指定了就用自定义的,没指定就用auto

  • publish.yaml
vpcConfigType:
  title: VPC网络配置
  type: string
  description: 配置服务中函数使用的网络,例如配置函数是否可以访问公网,是否可以访问 VPC 中的资源等。
  enum:
    - auto
    - 自定义配置
  • s.yaml
# ...others
service:
  name: "{{ serviceName }}"
  description: 欢迎使用ServerlessTool
  {{if vpcConfigType === 'auto'}}
  vpcConfig: auto
  {{else}}
  vpcConfig: # VPC配置, 配置后function可以访问指定VPC
    vpcId: "{{vpcID}}" # VPC ID
    securityGroupId: "{{securityGroupID}}" # 安全组ID
    vswitchIds: # 交换机 ID 列表
      - "{{vswitchID}}"
  {{/if}}

更多语法支持可以查看art-template文档

自定义过滤器filter

应用初始化时,对模版解析的时候可以自定义过滤器。

  • 首先我们需要在hook/filter.js文件里定义过滤器

    hook/filter.js 内容示例

    function timestamp(value) {
      return `your code: ${value}`
    }
    module.exports = {
      timestamp,
    };
  • 然后在模版里就可以使用我们定义过的过滤器

    s.yaml使用过滤器示例

    # ...others
    time: "{{time | timestamp}}"