点击领取2000元阿里云代金券,付款抵现金用,云服务器69元/年限时抢>>> 点击咨询成为阿里云VIP客户享永久折扣>>>
点击领取2860元腾讯云代金券,付款抵现金用,云服务器88元/年限时抢>>> 点击成为腾讯云VIP客户享永久折扣优惠>>> 点击进入华为云最新优惠活动现场>>> 点击成为华为云VIP客户享永久折扣优惠>>>
在创建或编辑云函数时,您可以通过修改配置中的环境变量,为云函数的运行环境增加、删除或修改环境变量。
在配置环境变量后,环境变量将在函数运行时配置到所在的操作系统环境中。函数代码可以使用读取系统环境变量的方式来获取到设置的具体值并在代码中使用。
新增环境变量使用控制台新增环境变量
- 登录云函数控制台,选择左侧导航栏中的【函数服务】。
- 在创建函数的过程中,或针对已创建的函数进行编辑时,可在“环境变量”中,增加环境变量。
环境变量通常以 key-value 对的形式出现,请在环境变量的输入框中,前一输入框输入所需的环境变量 key,后一输入框输入所需的环境变量 value。
本地新增环境变量本地开发时,可以直接在 template.yaml 中的函数下配置环境变量 Environment ,然后执行 scf deploy 命令部署到云端。如下所示:
test:
Type: TencentCloud::Serverless::Function
Properties:
CodeUri: ./
Type: Event
Description: This is a template function
Environment:
Variables:
ENV_FIRST: env1
ENV_SECOND: env2
Handler: index.main_handler
MemorySize: 128
Runtime: Nodejs6.10
Timeout: 3
查看环境变量在配置好云函数的环境变量后,可通过查看云函数的函数配置,查询到具体已配置的环境变量,环境变量以 key=value 的形式显示。
使用环境变量已配置的环境变量,会在函数运行时配置到函数所在的运行环境中,可通过代码读取系统环境变量的方式来获取到具体值并在代码中使用。需要注意的是,环境变量无法在本地进行读取。 假设针对云函数,配置的环境变量的 key 为 key ,以下为各运行环境读取并打印此环境变量值的示例代码。
- 在 Python 运行环境中,读取环境变量的方法为:
import os
value = os.environ.get('key')
print(value)
- 在 Node.js 运行环境中,读取环境变量的方法为:
var value = process.env.key
console.log(value)
- 在 Java 运行环境中,读取环境变量的方法分为临时授权字段和其他字段两种情况:
- 在 Golang 运行环境中,读取环境变量的方法为:
import "os"
var value string
value = os.Getenv("key")
- 在 PHP 运行环境中,读取环境变量的方法为:
$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/java8:/var/runtime/java8/lib/*:/opt |
NODE_PATH |
/var/user:/var/user/node_modules:/var/lang/node6/lib/node_modules:/opt:/opt/node_modules |
_ |
/var/lang/python3/bin/python3 |
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/java8:/var/user:/opt |
HOSTNAME |
{host id} |
SCF_RUNTIME |
函数运行时 |
SCF_FUNCTIONNAME |
函数名 |
SCF_FUNCTIONVERSION |
函数版本 |
TENCENTCLOUD_REGION |
区域 |
TENCENTCLOUD_APPID |
账号APPID |
TENCENTCLOUD_UIN |
账号UIN |
TENCENTCLOUD_TZ |
时区,当前为UTC |
|