在有了版本的基础上,您可以使用别名控制版本。服务的调用方无需了解服务版本,就可以通过别名调用正确的服务版本。

前提条件

  1. 准备函数
  2. 发布版本

步骤一:创建别名

  1. 登录函数计算控制台
  2. 在顶部菜单栏,选择地域。
  3. 在左侧导航栏中,单击服务及函数。在服务列表区域,单击目标服务。
  4. 服务及函数页面,单击目标服务,然后单击版本管理页签。
    version
  5. 版本管理页签,找到需要创建别名的版本,单击操作列的新建别名
    新建别名
  6. 新建别名对话框中,填写别名的相关信息,单击确定
    alias-information

    参数说明如下。

    参数 是否必填 操作 示例
    名称 填写自定义的别名名称。 alias
    描述 填写该别名的描述信息。
    主版本 您选择新建别名的版本,无需填写。 1
    灰度版本 若您需要将部分请求切到灰度版本处理,则在灰度版本列表中选择灰度版本。 2
    权重 当需要灰度版本处理部分请求时,该参数必填。填写灰度版本的权重。 30
    在目标服务的版本管理页签下,单击别名页签。您可以看到刚创建的别名。本示例中该别名指向版本1,灰度版本为版本2,灰度版本权重为30%。result-alias

(可选)步骤二:在触发器中使用别名

若您的函数中创建了触发器,您可以将触发器与别名关联。当线上版本切换时,触发器可以不受影响,平滑切换到别名指向的版本。

本文以OSS触发器为例说明如何在触发器中使用别名。

说明 触发器本身并没有版本,触发器可以被指向特定的服务版本或别名。
  1. 登录函数计算控制台
  2. 在左侧导航栏中,单击服务及函数。在服务列表区域,单击目标服务。
  3. 函数列表页签,单击目标函数名称。
  4. 单击触发器页签。
  5. 在触发器列表,单击目标触发器名称。
  6. 修改触发器面板,将触发版本/别名由LATEST修改为刚创建的别名,然后单击确定
    change-version

步骤三:执行指定别名下的函数

您可以通过控制台或API调用的方式验证是否执行了正确版本的函数。

通过控制台执行指定别名下的函数

  1. 服务及函数页面,单击目标服务。
  2. 单击目标函数名称。
  3. 在函数详情页面的右上角,在服务版本的下拉列表中选择服务别名,然后在别名下拉列表中选择别名。
    choose-version
  4. 单击代码执行页签。
  5. 单击执行
    执行完成后,在页面底部可以查看执行日志。从日志中可以看到函数执行时的版本信息qualifierPROD,解析出的versionId1,即本次执行的函数为别名PROD下的函数,该别名指向版本1result-alias

通过API调用指定别名下的函数

通过在request path的serviceName后加分隔符“.”,并用qualifier指定别名来调用特定别名下的函数。请求格式如下:

POST /services/{serviceName}.{qualifier}/functions/{functionName}/invocations           
本文示例如下:
POST /services/{service}.{qualifier}/functions/{function}/invocations

步骤四:发布灰度版本

当新版本开发完成后,需要使用灰度版本帮助新版本的稳定发布。

  1. 关于发布新版本操作步骤,请参见发布版本
    发布完成后,您可以在版本列表查看新发布的版本。version2
  2. 版本管理页签下,单击别名页签。
  3. 在别名列表中找到步骤一中创建的指向版本1的别名PROD,单击操作列的更新别名
  4. 更新别名对话框,将新版本设置为灰度版本,并填写灰度版本的权重。然后单击确定
    set-additional-version
    设置完成后,您可以将一部分线上流量切换到新版本。

步骤五:全量切换至新版本

当灰度版本运行稳定后,您可以将线上的流量全量切换到新版本。

  1. 版本管理页签下,单击别名页签。
  2. 在别名列表中找到步骤四中指向版本1和灰度版本2的别名PROD,单击操作列的更新别名
  3. 更新别名对话框,将主版本设置为新版本且不设置灰度版本。然后单击确定
    publish-version2
    设置完成后,您的线上流量被全量切换至新版本。