管理别名

函数计算支持为服务版本创建别名。结合别名和版本功能,实现软件开发生命周期中的持续集成和发布。本文介绍别名的含义以及如何通过函数计算控制台管理别名。

什么是别名

函数计算支持为服务的版本创建别名。别名可以理解为指向特定版本的指针。您可以利用别名来轻松实现发布、回滚以及灰度发布等功能。别名无法脱离服务或版本单独存在。使用别名访问服务或函数时,函数计算会将别名解析为其指向的版本,调用方无需了解别名指向的具体版本。

以HTTP触发器为例,如果没有别名,每次新版本上线,您需要手动修改HTTP触发器关联的版本号,在修改的过程中会影响客户端的使用。如果使用别名进行版本管理,您可以实现版本的平滑升级。如下图所示,将别名PROD指向稳定的版本1。客户端直接通过别名PROD调用版本1下的函数。

图 1. 发布版本1

image

版本1发布后,您可以继续在LATEST版本上开发新功能。由于客户端是通过别名调用对应版本下的函数,当需要发布新版本2时,只需要将别名PROD更新为指向版本2,此时,客户端调用时解析出的版本即为版本2,这样就可以完成版本的更新迭代。您也可以更改别名的指向,将别名PROD重新指向版本1回滚到之前的版本。通过这种方式发布,不会影响客户端的使用。

图 2. 发布版本2

image

前提条件

创建别名

  1. 登录函数计算控制台,在左侧导航栏,单击服务及函数
  2. 在顶部菜单栏,选择地域,然后在服务列表页面,单击目标服务。
  3. 在左侧导航栏,选择别名管理,在别名管理页面,单击创建别名

  4. 在创建服务别名面板,填写别名的相关信息,然后单击确定

    相关配置项说明如下。

    配置项

    说明

    名称

    要创建的别名的名称。

    描述

    别名的描述信息。

    主版本

    设置别名的主版本。

    启用灰度版本

    是否启用灰度版本。如需启用灰度发布,请选择,并按需设置以下配置项。

    灰度版本

    设置别名的灰度版本。

    灰度类型

    根据不同的灰度策略分为按百分比随机灰度按指定规则灰度

    • 按百分比随机灰度:设置一定的权重切换流量到灰度版本。

    • 按指定规则灰度:设置一定的规则,并按照指定的规则模式进行灰度发布。

    说明

    按指定规则灰度目前仅在使用HTTP触发器调用别名时生效。

    灰度版本权重

    灰度类型按百分比随机灰度时,需设置此配置项。

    表示切换流量至灰度版本的百分比。例如,设置该配置项的值为5%,函数计算将分配5%的流量到灰度版本,95%的流量到主版本。

    规则模式

    灰度类型按指定规则灰度时,需设置此配置项。

    表示对设置的规则的选择模式,取值如下:

    • 同时满足下列规则

    • 满足下列任意规则

    规则列表

    灰度类型按指定规则灰度时,需设置此配置项。

    表示具体的规则内容,包含以下三部分:

    • 参数类型:取值包含Header、Cookie和Query。

    • 参数:控制灰度发布的参数名。

    • 条件:计算条件。函数计算参数的实际值与您填写的参数值按照您设置的条件进行计算,如果满足条件,则本条请求被路由至灰度版本。包含以下枚举值:

      • =、!=、>、<、>=、<=:运算符比较条件。例如,设置条件=,表示仅当请求参数实际值等于设置的参数时,将本条请求路由至灰度版本。

      • in:字符串匹配条件,仅当请求参数实际值包含在设置的参数以内时,将本条请求路由至灰度版本。

      • 值分布百分比:表示按照指定参数值的特定百分比灰度发布。例如,设置参数类型为Header,参数user-id20,表示根据HTTP请求Headeruser-id值的分布,其中20%的请求路由至灰度版本。

    • :控制灰度发布的参数值。

    单击下方的+添加规则,可以添加更多其他规则。

    高级选项

    预留实例灰度比例

    用于控制预留模式的灰度实例比例。当预留的实例数量大于1时,会按照该配置项设置的比例生成预留模式的实例数量,否则,按照默认的1%生成预留模式的实例数量。

    重要

    仅当您预留的实例数量大于1时,该配置项的值有效。

    别名管理页面,您可以看到刚才创建的别名。您还可以根据界面提示对已创建的别名进行编辑、删除不需要的别名或者单击目标别名操作列的日志库跳转到日志服务SLS控制台查看日志情况。

说明

删除一个别名只会删除别名本身,并不会删除别名指向的版本,也不会删除指向此别名的触发器。

更多信息

除了通过控制台,您还可以使用Serverless Devs为服务配置别名。更多操作,请参见Serverless Devs操作命令