你还在生产环境改代码么?函数计算版本管理(一)版本和别名简介

在使用阿里云函数计算的过程中,您是否有过以下的疑虑:

1.     每次想要更改函数时,担心会破坏当前的线上环境?

2.     新做的改动上线后有点问题,想要回滚到改动之前的样子?

3.     想把生产环境的代码与开发中的代码分开?

如果回答是有,表示您应该使用阿里云函数计算最新推出的版本管理功能了~


本系列文章将分章节介绍版本管理功能的使用方法。首先介绍两个概念“版本”和“别名”:

 

版本(Versions):

函数计算提供服务级别的版本控制,版本相当于服务的快照,包括服务的配置、服务内的函数代码及配置。当您发布版本时,函数计算会为服务生成快照,并自动分配一个版本号与其关联,以供后续使用。版本号从1开始单调递增,不会被重复使用。

你还在生产环境改代码么?函数计算版本管理(一)版本和别名简介

 

以控制台为例,在您的服务页面点击“操作”,选择“发布版本”,就可以发布一个新版本了。

你还在生产环境改代码么?函数计算版本管理(一)版本和别名简介

注意,只有当您在“LATEST”版本下时才可以发布新版本。这是函数计算为您生成的默认版本,是您编辑服务、更改函数的地方。当您发布新版本时,函数计算会将“LATEST”版本中的内容进行快照,发布一个新版本,发布后的版本是不能更改的。您可以在控制台上查看您所有发布的版本。

你还在生产环境改代码么?函数计算版本管理(一)版本和别名简介

在没使用版本的情况下,您每次在服务上的改动都会立刻影响到生产环境,无法控制发布的时机。使用版本后,您可以在测试稳定后发布服务版本,用稳定的版本来服务线上请求,并且可以继续在“LATEST”版本上进行开发。

 


别名(Aliases):

别名可以理解为指向特定服务版本的指针,使用别名访问服务或函数时,函数计算会将别名解析为其指向的版本。别名可以更改,您可以用PRODTEST别名分别指向不同的版本,和您产品整体的开发测试结合起来。

 

你还在生产环境改代码么?函数计算版本管理(一)版本和别名简介

 以控制台为例,在您选中的服务版本下,点击“操作”,选择“创建别名”,就可以创建一个别名了。

你还在生产环境改代码么?函数计算版本管理(一)版本和别名简介

别名能进一步帮助您的发布流程。假设您有别名PROD指向稳定的版本1,并在“LATEST”上开发了新功能并发布新版本2后,只需要更新别名PROD指向版本2,就可以完成版本的更新迭代。

 


触发指定版本下的函数 

有了版本和别名,该如何触发不同版本下的函数呢?以InvokeFunction API为例,您只需要在request pathserviceName后加分隔符“.”,并用“qualifier”指定您需要的版本或者别名即可:

InvokeFunction Path format:

POST /services/{serviceName}.{qualifier}/functions/{functionName}/invocations

 例如:

  • POST /services/mySerivce.1/functions/myFunction/invocations

是调用myService服务版本1下的myFunction函数

  • POST /services/mySerivce.prod/functions/myFunction/invocations

是调用myService服务别名prod下的myFunction函数,函数计算会在运行时将别名prod解析为其指向的具体版本。

   


有了“版本”和“别名”,我们就可以将开发不同阶段的环境隔离开来,并通过传参调用想要的版本。让我们再回顾一下:

1.     版本是服务的快照,发布后不能更改

2.     别名是指向版本的指针,运行时会被解析为具体的版本

3.     触发函数时只需要在请求路径服务名称后带”.”分隔符和版本/别名的后缀即可

 

更多版本管理的高级用法和最佳实践,会陆续发布文章来介绍,敬请关注!


上一篇:《深入剖析Nginx》一2.3 利用strace/pstack调试Nginx


下一篇:实体框架 调试 显示 SQL语句 工具