tencent cloud

文档反馈

环境变量

最后更新时间:2024-04-22 17:45:15
    在创建或编辑云函数时,您可以通过修改配置中的环境变量,为云函数的运行环境增加、删除或修改环境变量。
    在配置环境变量后,环境变量将在函数运行时配置到所在的操作系统环境中。函数代码可以使用读取系统环境变量的方式来获取到设置的具体值并在代码中使用。

    新增环境变量

    使用控制台新增环境变量

    1. 登录 Serverless 控制台,单击左侧导航栏的函数服务。
    2. 在创建函数的过程中,或针对已创建的函数进行编辑时,可在“环境变量”中,增加环境变量。 环境变量通常以 key-value 对的形式出现,请在环境变量的输入框中,前一输入框输入所需的环境变量 key,后一输入框输入所需的环境变量 value。注意,key、value 的取值必须以字母起始,只能包含字母、数字及"_",长度不小于 2 位且不大于 64 字节。

    本地新增环境变量

    本地开发时,可以直接在 serverless.yml 中的函数下配置环境变量 Environment ,然后执行 scf 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 为 key,以下为各运行环境读取并打印此环境变量值的示例代码。
    在 Python 运行环境中,读取环境变量的方法为:
    import os
    value = os.environ.get('key')
    print(value)
    在 Node.js 运行环境中,读取环境变量的方法为:
    var value = process.env.key
    console.log(value)
    在 Java 运行环境中,读取环境变量的方法分为临时授权字段和其他字段两种情况:
    临时授权字段包括:TENCENTCLOUD_SESSIONTOKENTENCENTCLOUD_SECRETIDTENCENTCLOUD_SECRETKEY,读取环境变量的方法为:
    System.out.println("value: "+ System.getProperty("key"));
    其他字段,读取环境变量的方法为:
    System.out.println("value: "+ System.getenv("key"));
    在 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/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
    
    联系我们

    联系我们,为您的业务提供专属服务。

    技术支持

    如果你想寻求进一步的帮助,通过工单与我们进行联络。我们提供7x24的工单服务。

    7x24 电话支持