环境变量
在创建或编辑云函数时,您可以通过修改配置中的环境变量,为云函数的运行环境增加、删除或修改环境变量。
在配置环境变量后,环境变量将在函数运行时配置到所在的操作系统环境中,并在函数执行期间全局生效。函数代码可以使用读取系统环境变量的方式来获取到设置的具体值并在代码中使用。
查看环境变量
在配置好云函数的环境变量后,可通过查看云函数的函数配置,查询到具体已配置的环境变量,环境变量以 key=value 的形式显示。
使用环境变量
已配置的环境变量,会在函数运行时配置到函数所在的运行环境中,可通过代码读取系统环境变量的方式来获取到具体值并在代码中使用。需要注意的是,环境变量无法在本地进行读取。
假设针对云函数,配置的环境变量的 key 为 key,以下为各运行环境读取并打印此环境变量值的示例代码。
- 在 Node.js 运行环境中,读取环境变量的方法为:
var value = process.env.key
console.log(value)
- 在 Python 运行环境中,读取环境变量的方法为:
import os
value = os.environ.get('key')
print(value)
使用场景
- 可变值提取:针对业务中有可能会变动的值,提取至环境变量中,可避免需要根据业务变更而修改代码。
- 加密信息外置:认证、加密相关的 key,从代码中提取至环境变量,可避免相关 key 硬编码在代码中而引起的安全风险。
- 环境区分:针对不同开发阶段所要进行的配置和数据库信息,可提取到环境变量中。针对开发和发布的不同阶段,仅需要修改环境变量的值,分别执行开发环境数据库和发布环境数据库即可。
使用限制
针对云函数的环境变量,有如下使用限制:
- key 必须以字母 [a-zA-Z] 开头,只能包含字母数字字符和下划线( [a-zA-Z0-9_])。
- 预留的环境变量 key 无法配置。预留的 key 包括:
- SCF_ 开头的 key,例如 SCF_RUNTIME。
- QCLOUD_ 开头的 key,例如 QCLOUD_APPID。
- TENCENTCLOUD_ 开头的 key,例如 TENCENTCLOUD_SECRETID。
已内置环境变量
| 环境变量 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(事件函数在 Node.js 16.13环境下有该内置变量,HTTP 云函数则无该变量) |
| 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 |
提示
获取临时密钥信息的代码,需放在 main 函数中触发。详情请参见: 获取运行角色临时密钥信息