Skip to content

Provision 命令

provision 命令是进行函数预留操作的命令;主要包括预留配置的查看与更新等操作。

⚠️ 注意:预留资源会持续产生费用,如果不需要请及时释放资源

命令解析

当执行命令provision -h/provision --help时,可以获取帮助文档。

在该命令中,包括了三个子命令:

provision list 命令

provision list 命令,是查看服务已发布的版本列表的命令。

当执行命令provision list -h/provision list --help时,可以获取帮助文档。

参数解析

参数全称 参数缩写 Yaml 模式下必填 Cli 模式下必填 参数含义
region - 选填 必填 地区,取值范围:cn-hangzhou, cn-beijing, 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 - 选填 必填 服务名
qualifier 选填 选填 配置预留的版本,仅支持服务的 LATEST 和别名
table 选填 是否以表格形式输出

当前命令还支持部分全局参数(例如-a/--access, --debug等),详情可参考 Serverless Devs 全局参数文档

操作案例

  • 有资源描述文件(Yaml)时,可以直接执行s provision list查看当前预留示例列表;
  • 纯命令行形式(在没有资源描述 Yaml 文件时),需要指定服务所在地区以及服务名称,例如s cli fc provision list --region cn-hangzhou --service-name fc-deploy-service

上述命令的执行结果示例:

fc-deploy-test:
  -
    serviceName:            fc-deploy-service
    qualifier:              release
    functionName:           http-trigger-py36
    resource:               1583208943291465#fc-deploy-service#release#http-trigger-py36
    target:                 1
    current:                1
    scheduledActions:       (empty array)
    targetTrackingPolicies: (empty array)

如果指定了--table参数,输出示例:

  ┌────────────┬────────────┬────────────┬────────────┬────────────┬────────────────────────────┬────────────────────────────┐
  │ serviceNam │ qualifier  │ functionNa │   target   │  current   │      scheduledActions      │   targetTrackingPolicies   │
  │     e      │            │     me     │            │            │                            │                            │
  ├────────────┼────────────┼────────────┼────────────┼────────────┼────────────────────────────┼────────────────────────────┤
  │ fc-deploy- │ release    │ http-trigg │ 1          │ 1          │                            │                            │
  │ service    │            │ er-py36    │            │            │                            │                            │
  └────────────┴────────────┴────────────┴────────────┴────────────┴────────────────────────────┴────────────────────────────┘

provision put 命令

provision put 命令用于配置预留。

当执行命令provision put -h/provision put --help时,可以获取帮助文档。

参数解析

参数全称 参数缩写 Yaml 模式下必填 Cli 模式下必填 参数含义
region - 选填 必填 地区,取值范围:cn-hangzhou, cn-beijing, 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 - 选填 必填 服务名
function-name - 选填 必填 版本描述
config 选填 选填 定时伸缩与弹性伸缩配置
qualifier 必填 必填 配置预留的版本,仅支持服务的 LATEST 和别名
enable-idle-billing 选填 选填 开启闲置计费。默认不开启
target 选填 选填 预留实例数量,target 如果大于 0,配置函数预留,预留资源会持续产生费用,如果不需要请及时释放资源;target 如果等于 0,释放预留资源;--target参数的权重大于--config中的target,即如果config的配置文件中和参数指定同时存在target配置,优先使用参数中的target配置

当前命令还支持部分全局参数(例如-a/--access, --debug等),详情可参考 Serverless Devs 全局参数文档

操作案例

  • 有资源描述文件(Yaml)时,可以直接执行s provision put进行版本的发布,例如s provision put --qualifier release --target 1
  • 纯命令行形式(在没有资源描述 Yaml 文件时),需要指定服务所在地区以及服务名称,例如s cli fc provision put --region cn-hangzhou --service-name fc-deploy-service --function-name fc-deploy-function --qualifier release --target 1 -h

上述命令的执行结果示例:

fc-deploy-test:
  resource:               1583208943291465#fc-deploy-service#release#http-trigger-py36
  target:                 1
  scheduledActions:       []
  targetTrackingPolicies: []

💡 删除预留:删除预留的方法,可以通过s provision put命令,进行删除,只需要将target调整为 0 即可。例如s provision put --qualifier release --target 0

⚠️ --target参数的权重大于--config中的target,即如果config的配置文件中和参数指定同时存在target配置,优先使用参数中的target配置 阿里云函数计算配置预留拥有多种形式,单纯通过target参数进行控制的只是非常简单的配置,除此之外还支持定时伸缩与弹性伸缩配置方法,此时就需要对--config参数进行配置,--config参数识别的是一个 JSON 文件,基础格式如下:

{
  "target": 2,
  "scheduledActions": [
    {
      "name": "timer",
      "startTime": "2021-07-07T16:00:00.000Z",
      "endTime": "2021-07-08T16:00:00.000Z",
      "target": 1,
      "scheduleExpression": "cron(0 0 12 * * *)"
    },
    {
      "name": "timer2",
      "startTime": "2021-07-06T16:00:00.000Z",
      "endTime": "2021-07-07T16:00:00.000Z",
      "target": 2,
      "scheduleExpression": "cron(0 0 12 * * *)"
    }
  ],
  "targetTrackingPolicies": [
    {
      "name": "zb",
      "startTime": "2021-07-13T16:00:00.000Z",
      "endTime": "2021-07-14T16:00:00.000Z",
      "metricType": "ProvisionedConcurrencyUtilization",
      "metricTarget": 0.25,
      "minCapacity": 1,
      "maxCapacity": 3
    },
    {
      "name": "zb2",
      "startTime": "2021-07-05T16:00:00.000Z",
      "endTime": "2021-07-06T16:00:00.000Z",
      "metricType": "ProvisionedConcurrencyUtilization",
      "metricTarget": 0.85,
      "minCapacity": 4,
      "maxCapacity": 5
    }
  ]
}

参数内容详情:

参数名 类型 是否必填 示例 描述
target number 1 预留的目标资源个数
scheduledActions list[object] 定时伸缩策略:通过定时伸缩策略您可以更加灵活地配置预留的函数实例,在指定时间将预留的函数实例量设定成需要的值,使函数实例量更好地贴合业务的并发量。
targetTrackingPolicies list[object] 指标伸缩策略:根据函数实例并发利用率的情况每分钟对预留资源进行一次伸缩。
- 当指标超过追踪值 metricTarget 时,开始以积极的策略扩容预留模式的函数实例量,以使得指标值恢复到追踪值 metricTarget 附近。
- 当指标低于追踪值 metricTarget 时,开始以保守的策略缩容预留模式的函数实例量,以使得指标值逐渐恢复到追踪值 metricTarget 附近。
当您在系统中设置了伸缩最大值和最小值时,预留的函数实例量会在最大值与最小值之间进行伸缩,超出最大值时将停止扩容,低于最小值时将停止缩容。

其中scheduledActions参数的数据结构为:

参数名 类型 是否必填 示例 描述
name string demoScheduler 定时任务的名称。
startTime string 2020-10-10T10:10:10Z 定时伸缩的起始生效时间。
endTime string 2020-12-10T10:10:10Z 定时伸缩的结束生效时间。
target number 10 预留的目标资源个数。
scheduleExpression string cron(0 30 8 * * *) 定时信息,支持两种格式。
- At expressions - "at(yyyy-mm-ddThh:mm:ss)":只调度一次,使用 UTC 格式。
- Cron expressions - "cron(0 0 20 * * *)":调度多次,使用标准 crontab 格式,如:每天 20:00 进行调度。

其中targetTrackingPolicies参数的数据结构为:

参数名 类型 是否必填 示例 描述
name string demoScheduler 定时任务的名称。
startTime string 2020-10-10T10:10:10Z 定时伸缩的起始生效时间。
endTime string 2020-12-10T10:10:10Z 定时伸缩的结束生效时间。
metricType string ProvisionedConcurrencyUtilization 追踪的指标类型。
metricTarget number(double) 0.6 指标的追踪值。
minCapacity number 10 缩容的最小值。
maxCapacity number 100 扩容的最大值。

provision get 命令

provision get 命令,是获取预留实例详情的命令。

当执行命令provision get -h/provision get --help时,可以获取帮助文档。

参数解析

参数全称 参数缩写 Yaml 模式下必填 Cli 模式下必填 参数含义
region - 选填 必填 地区,取值范围:cn-hangzhou, cn-beijing, 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 - 选填 必填 服务名
function-name - 选填 必填 版本描述
qualifier 必填 必填 配置预留的版本,仅支持服务的 LATEST 和别名

当前命令还支持部分全局参数(例如-a/--access, --debug等),详情可参考 Serverless Devs 全局参数文档

操作案例

  • 有资源描述文件(Yaml)时,可以直接执行s provision get --qualifier qualifier获取预留实例详情;
  • 纯命令行形式(在没有资源描述 Yaml 文件时),需要指定服务所在地区以及服务名称,例如s cli fc provision get --region cn-hangzhou --service-name fc-deploy-service --function-name fc-deploy-function --qualifier release

上述命令的执行结果示例:

fc-deploy-test:
  serviceName:            fc-deploy-service
  functionName:           http-trigger-py36
  qualifier:              release
  resource:               1583208943291465#fc-deploy-service#release#http-trigger-py36
  target:                 1
  current:                1
  scheduledActions:       []
  targetTrackingPolicies: []

权限与策略说明

  • provision listprovision get 命令所需要的权限策略: AliyunFCReadOnlyAccess

  • provision put 命令所需要的权限策略:

{
  'Version': '1',
  'Statement':
    [
      {
        'Action': 'fc:PutProvisionConfig',
        'Effect': 'Allow',
        'Resource': 'acs:fc:<region>:<account-id>:services/services/<serviceName>.<qualifier>/functions/<functionName>',
      },
    ],
}