在使用阿里云函数计算的过程中,您是否有过以下的疑虑:
1. 每次想要更改函数时,担心会破坏当前的线上环境?
2. 新做的改动上线后有点问题,想要回滚到改动之前的样子?
3. 想把生产环境的代码与开发中的代码分开?
如果回答是有,表示您应该使用阿里云函数计算最新推出的版本管理功能了~
本系列文章将分章节介绍版本管理功能的使用方法。首先介绍两个概念“版本”和“别名”:
版本(Versions):
函数计算提供服务级别的版本控制,版本相当于服务的快照,包括服务的配置、服务内的函数代码及配置。当您发布版本时,函数计算会为服务生成快照,并自动分配一个版本号与其关联,以供后续使用。版本号从1开始单调递增,不会被重复使用。
以控制台为例,在您的服务页面点击“操作”,选择“发布版本”,就可以发布一个新版本了。
注意,只有当您在“LATEST”版本下时才可以发布新版本。这是函数计算为您生成的默认版本,是您编辑服务、更改函数的地方。当您发布新版本时,函数计算会将“LATEST”版本中的内容进行快照,发布一个新版本,发布后的版本是不能更改的。您可以在控制台上查看您所有发布的版本。
在没使用版本的情况下,您每次在服务上的改动都会立刻影响到生产环境,无法控制发布的时机。使用版本后,您可以在测试稳定后发布服务版本,用稳定的版本来服务线上请求,并且可以继续在“LATEST”版本上进行开发。
别名(Aliases):
别名可以理解为指向特定服务版本的指针,使用别名访问服务或函数时,函数计算会将别名解析为其指向的版本。别名可以更改,您可以用PROD和TEST别名分别指向不同的版本,和您产品整体的开发测试结合起来。
以控制台为例,在您选中的服务版本下,点击“操作”,选择“创建别名”,就可以创建一个别名了。
别名能进一步帮助您的发布流程。假设您有别名PROD指向稳定的版本1,并在“LATEST”上开发了新功能并发布新版本2后,只需要更新别名PROD指向版本2,就可以完成版本的更新迭代。
触发指定版本下的函数
有了版本和别名,该如何触发不同版本下的函数呢?以InvokeFunction API为例,您只需要在request path的serviceName后加分隔符“.”,并用“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. 触发函数时只需要在请求路径服务名称后带”.”分隔符和版本/别名的后缀即可
更多版本管理的高级用法和最佳实践,会陆续发布文章来介绍,敬请关注!