管理变量

云原生应用开发平台 CAP通过变量管理,提供了跨服务管理配置和敏感字段托管的能力,支持定义项目级别的共享变量和服务级别的服务变量,并提供引用功能。

您定义共享变量后,可以在相关配置中以${shared.变量名}形式引用变量;定义服务变量后,可以在相关配置中以${self.变量名}形式引用变量。添加、更新或删除变量会导致项目的一系列变更,点击全量部署后,变量的变更方可生效。

变量类型

变量分为共享变量服务变量两种类型,其作用域和支持的数据类型如下所示:

变量类型

共享变量

服务变量

作用域

本项目下的所有服务配置内

本服务配置内

数据类型

String类型

String类型

引用方式

${shared.变量名}

${self.变量名}

说明

函数服务配置中的环境变量与以上两种变量类型不同,详情请参考函数计算配置环境变量。函数服务中环境变量的值可以引用共享变量和服务变量中的值。

加密变量

共享变量服务变量均提供了加密功能,用于托管项目或服务的敏感信息字段(例如数据库账密、访问令牌等)。进入项目详情页,点击项目配置,可以查看该项目下的共享变量名和对应的值,以及该变量被哪些服务所引用。点击编辑链接,可以添加、删除或修改变量。

image

同样,进入服务详情界面,点击服务变量,可以对该服务的变量进行管理。

image

若打开加密开关,该变量将被CAP加密托管,点击保存并全量部署后在控制台和部署日志中均以密文的形式透出,不显示明文。

说明

变量选择加密保存后不支持再次查看明文。若需修改,点击编辑,修改原有的值点击保存即可。此外,部署过程中,CAP会在部署链路自动解密,并保护明文不在日志或控制台中透出,用户不需要在控制台对加密变量进行额外的解密操作。

引用变量

项目中的共享变量,可以在该项目下的任何服务配置内以${shared.变量名}的方式引用此共享变量的值。服务变量,可以在该服务的配置内以${self.变量名}形式引用此服务变量的值。例如,可以在如下函数服务的环境变量中,引用此项目的共享变量和此服务的服务变量。

image

可引用范围

共享变量引用范围

  • 共享变量:共享变量内可以引用其他的共享变量,例如共享变量A可以引用共享变量B的值。

  • 服务变量:服务变量可以引用共享变量的值。

  • 服务配置:服务配置可以引用共享变量的值。

服务变量引用范围

  • 服务变量:服务变量只可以引用本服务内的服务变量,服务变量暂不支持跨服务引用,若需跨服务引用某一字段,推荐使用共享变量。例如一个项目包含两个服务,函数服务和流程服务,函数服务中的服务变量不能访问流程服务中的服务变量,可将流程服务中的变量配置在共享变量中,两个服务分别用${shared.变量名}的方式引用。

  • 服务配置:服务配置可以引用本服务内的服务变量。

高级引用方式

拼接引用

变量管理支持多个变量或变量+字符串的拼接引用,即某一变量的值可以是多个变量引用的拼接,CAP支持对这样的拼接引用进行解析,具体如下图所示:

image

嵌套引用

变量管理支持字符串的嵌套引用。例如下图中url变量可以对domainName变量做引用,CAP支持对这样的嵌套引用进行解析。

image

查看真实值

配置变量,点击保存,并在上方点击全量部署按钮,变量的修改方可生效。在共享变量页面或服务变量页面,点击image可以查看变量引用解析后的真实值。

image