使用变量跨服务管理配置

Function AI通过变量管理,提供了跨服务管理配置和敏感字段托管的能力,支持定义项目级别的共享变量和服务级别的服务变量,并提供引用功能。每个服务部署完毕后,后台自动生成当前服务的结果变量,可以在其他服务的配置中引用此结果变量,从而建立服务间的依赖关系。

变量类型

支持共享变量服务变量结果变量三种变量类型,差异对比如下所示:

变量类型

共享变量

服务变量

结果变量

作用域

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

本服务配置内

本项目下其他服务配置内

数据类型

String类型

String类型

String类型

引用方式

${shared.变量名}

${self.变量名}

${output.服务名.变量名}

变量引用说明:

  • 定义共享变量后,可以在当前项目下的所有服务的环境变量中以${shared.变量名}形式引用此变量。

  • 定义服务变量后,仅可以在当前服务的环境变量中以${self.变量名}形式引用此变量。

  • 不支持自定义结果变量,某服务部署成功后,系统自动生成当前服务的结果变量并存放在后台,您可以在其他服务的环境变量中通过${output.<service_name>.变量名}引用此结果变量

添加、更新或删除变量会导致项目的一系列变更,单击全量部署后,变量的变更方可生效。

说明

函数服务或Web服务配置中的环境变量与以上三种变量类型不同,环境变量的值可以引用共享变量服务变量结果变量中的值,而环境变量用于在在代码中使用环境变量的方式获取相应信息。

各服务结果变量一览

以下枚举各服务类型的结果变量,在其他服务中的环境变量配置中引用结果变量值时,需将<service_name>替换为当前服务的名称。例如,您创建了名称为awesome-keller的数据库服务,部署成功后,您可以在当前项目下的Web服务的环境变量中,引用数据库服务的实例访问地址结果变量${output.awesome-keller.host}。引用此结果变量后,在该Web服务的代码中,可以通过在代码中使用环境变量的方式,获取数据库实例的访问地址,从而在Web服务中连接该数据库实例。

服务类型

结果变量含义

引用方式

Web服务

函数名

${output.<service_name>.functionName}

函数资源描述符

${output.<service_name>.functionArn}

函数HTTP触发器内网访问地址

${output.<service_name>.url.system_intranet_url}

函数HTTP触发器公网访问地址

${output.<service_name>.url.system_url}

函数自定义域名

${output.<service_name>.url.custom_domain}

异步任务服务

函数名

${output.<service_name>.functionName}

函数资源描述符

${output.<service_name>.functionArn}

函数服务

函数名

${output.<service_name>.functionName}

函数资源描述符

${output.<service_name>.functionArn}

数据库服务

数据库实例ID

${output.<service_name>.instanceID}

数据库实例访问地址

${output.<service_name>.host}

模型服务

模型服务名

${output.<service_name>.serviceName}

公网调用地址

${output.<service_name>.urlInternet}

私网调用地址

${output.<service_name>.urlIntranet}

流程服务

流程服务名

${output.<service_name>.name}

加密变量

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

image

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

image

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

说明

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

引用变量

  • 定义共享变量后,可以在当前项目下的所有服务的环境变量中以${shared.变量名}形式引用此变量。

  • 定义服务变量后,仅可以在当前服务的环境变量中以${self.变量名}形式引用此变量。

  • 不支持自定义结果变量,某服务部署成功后,系统自动生成当前服务的结果变量并存放在后台,您可以在其他服务的环境变量中通过${output.<service_name>.变量名}引用此结果变量

变量引用示例

以下图中函数服务为例,在函数服务的环境变量中,您可以引用服务所属项目的共享变量、当前服务的服务变量或其他服务的结果变量。

image

高级引用方式

拼接引用

支持多个变量或变量+字符串的拼接引用,即某一变量的值可以是多个变量引用的拼接,Function AI支持对这样的拼接引用进行解析,例如下图中使用@字符拼接两个共享变量。

image

嵌套引用

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

image

查看真实值

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

image