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

前提条件

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

步骤一:创建别名

  1. 登录函数计算控制台
  2. 在顶部菜单栏,选择地域。
  3. 在左侧导航栏,单击服务/函数
  4. 单击目标服务service,然后单击版本管理页签。
  5. 在版本列表找到需要创建别名的版本,单击操作列中的新建别名
    create-alias
  6. 新建别名对话框中,填写别名名称,然后单击确定
    切换到别名页签下,可以看到刚创建成功的别名alias以及该别名指向的版本1。result-alias

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

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

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

说明 触发器本身并没有版本,触发器可以被指向特定的服务版本或别名。
  1. 服务/函数页面,找到目标服务service下的目标函数function。
  2. 在LATEST版本下,单击目标函数名称。
  3. 单击触发器页签。
  4. 在触发器列表,单击目标触发器名称。
  5. 修改触发器页面,将触发版本/别名由LATEST修改为刚创建的别名。然后单击确定
    change-version

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

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

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

  1. 服务/函数页面,找到目标服务service下的目标函数function。
  2. 单击目标函数名称。
  3. 在函数详情页的右上角,选择服务别名PROD。
    choose-version
  4. 单击代码执行页签。
  5. 单击执行
    执行完成后,在页面底部可以查看执行日志。从日志中可以看到函数执行时的版本信息qualifier为PROD,解析出的versionId为1,即本次执行的函数为别名PROD下的函数,该别名指向版本1。result-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
    设置完成后,您的线上流量被全量切换至新版本。