在创建或编辑云函数时,您可以通过修改配置中的环境变量,为云函数的运行环境增加、删除或修改环境变量。

在配置环境变量后,环境变量将在函数运行时配置到所在的操作系统环境中。函数代码可以使用读取系统环境变量的方式来获取到设置的具体值并在代码中使用。

新增环境变量

使用控制台新增环境变量

key-value

本地新增环境变量

serverless.ymlscf deploy
component: scf # (必选) 组件名称,在该实例中为scf
name: scfdemo # (必选) 组件实例名称。

#组件参数配置
inputs:
  name: scfdemo # 云函数名称,默认为 ${name}-${stage}-${app}
  namespace: default
  # 1. 默认写法,新建特定命名的 cos bucket 并上传
  src: ./src
  type: event # 函数类型,默认为 event(事件类型),web(web类型)
  handler: index.main_handler #入口(函数类型为事件类型时生效)
  runtime: Nodejs10.15 # 运行环境 默认 Nodejs10.15
  region: ap-guangzhou # 函数所在区域
  description: This is a function in ${app} application.
  memorySize: 128 # 内存大小,单位MB
  timeout: 20 # 函数执行超时时间,单位秒
  initTimeout: 3 # 初始化超时时间,单位秒
  environment: #  环境变量
    variables: #  环境变量对象
      TEST1: value1
      TEST2: value2

查看环境变量

key=value

使用环境变量

key
import os
value = os.environ.get('key')
print(value)
var value = process.env.key
console.log(value)
System.out.println("value: "+ System.getProperty("key"));
System.out.println("value: "+ System.getenv("key"));
import "os"
var value string
value = os.Getenv("key")
$value = getenv('key');

使用场景

  • 可变值提取:针对业务中有可能会变动的值,提取至环境变量中,可避免需要根据业务变更而修改代码。
  • 加密信息外置:认证、加密相关的 key,从代码中提取至环境变量,可避免相关 key 硬编码在代码中而引起的安全风险。
  • 环境区分:针对不同开发阶段所要进行的配置和数据库信息,可提取到环境变量中。针对开发和发布的不同阶段,仅需要修改环境变量的值,分别执行开发环境数据库和发布环境数据库即可。

使用限制

针对云函数的环境变量,有如下使用限制:

  • key 必须以字母 [a-zA-Z] 开头,只能包含字母数字字符和下划线( **[a-zA-Z0-9_]**)。
  • 预留的环境变量 key 无法配置。预留的 key 包括:
  • SCF_ 开头的 key,例如 SCF_RUNTIME。
  • QCLOUD_ 开头的 key,例如 QCLOUD_APPID。
  • TECENTCLOUD_ 开头的 key,例如 TENCENTCLOUD_SECRETID。

已内置环境变量

目前运行环境中已内置的环境变量的 Key 及 Value 见下表:

环境变量 Key 具体值或值来源
TENCENTCLOUD_SESSIONTOKEN {临时 SESSION TOKEN}
TENCENTCLOUD_SECRETID {临时 SECRET ID}
TENCENTCLOUD_SECRETKEY {临时 SECRET KEY}
_SCF_SERVER_PORT 28902
TENCENTCLOUD_RUNENV SCF
USER_CODE_ROOT /var/user/
TRIGGER_SRC timer(使用定时触发器时)
PYTHONDONTWRITEBYTECODE x
PYTHONPATH /var/user:/opt
CLASSPATH /var/runtime/java x:/var/runtime/java x/lib/*:/opt(x 为 8 或 11)
NODE_PATH /var/user:/var/user/node_modules:/var/lang/node x/lib/node_modules:/opt:/opt/node_modules(x 为 16、14、12、10、8 或 6)
PHP_INI_SCAN_DIR /var/user/php_extension:/opt/php_extension
_ /var/lang/python3/bin/python x(x 为 37、3 或 2)
PWD /var/user
LOGNAME qcloud
LANG en_US.UTF8
LC_ALL en_US.UTF8
USER qcloud
HOME /home/qcloud
PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
SHELL /bin/bash
SHLVL 3
LD_LIBRARY_PATH /var/runtime/java x:/var/user:/opt(x 为 8 或 11)
HOSTNAME {host id}
SCF_RUNTIME 函数运行时
SCF_FUNCTIONNAME 函数名
SCF_FUNCTIONVERSION 函数版本
TENCENTCLOUD_REGION 区域
TENCENTCLOUD_APPID 账号 APPID
TENCENTCLOUD_UIN 账号 UIN
TENCENTCLOUD_TZ 时区,当前为 UTC