赛尔校园公共服务平台 Logo
平台使用
阿里云
百度云
移动云
智算服务
教育生态
登录 →
赛尔校园公共服务平台 Logo
平台使用 阿里云 百度云 移动云 智算服务 教育生态
登录
  1. 首页
  2. 阿里云
  3. 函数计算 FC 2.0
  4. 操作指南
  5. 函数管理
  6. 环境变量

环境变量

  • 函数管理
  • 发布于 2025-04-16
  • 0 次阅读
文档编辑
文档编辑

您可以使用环境变量,在不修改代码的前提下灵活调整FC函数的行为。环境变量作为函数配置的一部分,以字符串键值对的方式存储,不同函数拥有独立的环境变量。本文介绍环境变量的基本信息、配置方式以及如何在代码中使用环境变量等。

安全性

创建或者更新环境变量时,函数计算会对您的环境变量使用AES256(Advanced Encryption Standard 256)标准加密存储,在初始化函数实例时,会将环境变量解密后注入到函数实例环境中。

使用限制

  • 字符集规则

    • Key的字符集:必须以大小写字母开头,只能包含大小写字母、数字。

  • 大小限制

    所有环境变量的大小总和不能超过4 KB。

  • 系统预留环境变量

    为避免系统混淆,设置环境变量时,您不能使用系统预留的环境变量FC_*、accessKeyID、accessKeySecret、securityToken和topic。

    您可以使用以下系统环境变量:

    • FC_FUNC_CODE_PATH:代码部署目录。

    • ALIBABA_CLOUD_ACCESS_KEY_ID:用户角色密钥ID。

    • ALIBABA_CLOUD_ACCESS_KEY_SECRET:用户角色密钥。

    • ALIBABA_CLOUD_SECURITY_TOKEN:用户角色临时Token。

    • FC_ACCOUNT_ID:用户ID。

    • FC_FUNCTION_HANDLER:用户请求处理程序。

    • FC_FUNCTION_MEMORY_SIZE:函数配置的内存大小,单位为MB。

    • FC_FUNCTION_NAME:函数名称。

    • FC_REGION:函数所属地域。

    • FC_SERVICE_NAME:函数所属服务名称。

    • FC_CUSTOM_LISTEN_PORT:函数自定义监听端口。

    • FC_INSTANCE_ID:函数实例ID。

    • FC_QUALIFIER:函数所属服务的别名,默认为LATEST。

    重要

    系统环境变量accessKeyID、accessKeySecret、securityToken、ALIBABA_CLOUD_ACCESS_KEY_ID、ALIBABA_CLOUD_ACCESS_KEY_SECRET和ALIBABA_CLOUD_SECURITY_TOKEN为临时密钥敏感信息,请勿透露给第三方。

使用场景

  • 跨平台或跨服务共享代码

    同一份代码,在测试环境和生产环境运行时的配置可能存在差异。您可以通过环境变量的方式选择使用不同的OSS的Bucket、数据库或者表格。代码在不同平台部署时无需更改。

  • 配置密钥

    连接数据库的用户名和密码、您的阿里云AccessKey或者其他安全敏感性的认证信息都可以通过环境变量设置。

  • 配置系统变量

    在配置PATH和HOME等目录时能够更灵活地使用系统库。

通过控制台配置环境变量

前提条件

创建函数

操作步骤

  1. 登录函数计算控制台,在左侧导航栏,单击服务及函数。
  2. 在顶部菜单栏,选择地域,然后在服务列表页面,单击目标服务。
  3. 在函数管理页面,单击目标函数操作列的配置。
  4. 在编辑函数配置页面的环境变量区域,按需选择配置环境变量的方式,然后单击保存。

    • 使用表单编辑(默认方式)

      1. 单击+添加变量。

      2. 配置环境变量的键值对:

        • 变量:自定义。

        • 值:自定义。

        示例如下。

        sc_edit_environment_variables

    • 使用JSON格式编辑

      1. 单击使用JSON格式编辑。

      2. 在文本框内,输入对应的JSON格式的键值对,格式如下。

        {
            "key": "value"
        }

        示例如下。

        {
            "BUCKET_NAME": "MY_BUCKET",
            "TABLE_NAME": "MY_TABLE"
        }
  5. 验证环境变量是否创建成功。

    1. 在函数详情页面,单击函数代码页签。

    2. 在代码编辑器中编写代码,然后单击保存并部署,等待部署成功后单击测试函数。

      本文以Python事件函数为例,验证环境变量的代码示例如下。

      # -*- coding: utf-8 -*-
      import logging
      import os
      
      def handler(event, context):
          logger = logging.getLogger()
          value = os.environ.get('BUCKET_NAME')
          logger.info('BUCKET_NAME: {}'.format(value))
          value = os.environ.get('TABLE_NAME')
          logger.info('TABLE_NAME: {}'.format(value))
          return "done"
    3. 在函数代码页签,查看日志输出。

      从打印日志中可以看出环境变量已经创建成功。

通过Serverless Devs配置环境变量

前提条件

  • 安装Serverless Devs和Docker

  • 配置Serverless Devs

操作步骤

  1. 创建一个用于测试的代码目录,如test。

  2. 进入test目录,基于上述代码创建index.py文件。

  3. 创建s.yaml文件。

    文件内容如下:

    edition: 1.0.0
    name: transform_fun
    access: default
    vars:
      region: cn-shenzhen
    services:
      fc-Demo-envdemo:
        component: devsapp/fc
        props:
          region: ${vars.region}
          service:
            name: Demo    #  声明一个名称为Demo的服务
            internetAccess: true
          function:
            name: envdemo   #  在Demo服务下声明一个名称为envdemo的函数
            handler: index.handler    #  配置函数的请求处理程序
            runtime: python3          #  配置函数的运行环境
            environmentVariables:     #  为函数配置如下两个环境变量
              BUCKET_NAME: MY_BUCKET
              TABLE_NAME: MY_TABLE
            codeUri: ./               #  从当前目录"./"部署函数。部署函数时,Serverless Devs会将当前目录打包上传
  4. 执行s deploy部署项目。

    执行成功后,您可以登录函数计算控制台查看已创建的服务和函数,以及为该函数配置的两个环境变量。

通过SDK配置环境变量

以Python SDK为例,环境变量的参数为environmentVariables,参数取值以字典形式存储。创建、更新、获取环境变量的示例代码如下。

  • 创建环境变量

    # coding: utf-8
    import fc2
    import os
    
    client = fc2.Client(
        endpoint='your endpoint', # 接入点信息。
        # 阿里云账号AccessKey拥有所有API的访问权限,建议您使用RAM用户进行API访问或日常运维。
        # 建议不要把AccessKey ID和AccessKey Secret保存到工程代码里,否则可能导致AccessKey泄露,威胁您账号下所有资源的安全。
        # 本示例以将AccessKey ID和AccessKey Secret保存在环境变量中实现身份验证为例。
        # 运行本示例前请先在本地环境中设置环境变量ALIBABA_CLOUD_ACCESS_KEY_ID和ALIBABA_CLOUD_ACCESS_KEY_SECRET。
        # 在FC Runtime运行环境下,配置执行权限后,ALIBABA_CLOUD_ACCESS_KEY_ID和ALIBABA_CLOUD_ACCESS_KEY_SECRET环境变量会自动被设置。
        accessKeyID=os.getenv('ALIBABA_CLOUD_ACCESS_KEY_ID'), # AccessKey ID,阿里云身份验证,在RAM控制台创建。
        accessKeySecret=os.getenv('ALIBABA_CLOUD_ACCESS_KEY_SECRET') # AccessKey Secret,阿里云身份验证,在RAM控制台创建。
    
    client.create_service('test')
    
    client.create_function(
        'test', 'test_env', 'python3',  'main.handler',
        codeDir='/path/to/code/', environmentVariables={'testKey': 'testValue'})
    
    #test 服务名
    #test_env 函数名
    #python3  Runtime类型
    #main.handler 请求处理程序
    #codeDir 代码目录
    #environmentVariables 要配置的环境变量
    
    res = client.get_function('test', 'test_env')
    
    print(res.data)
  • 更新环境变量

    client.update_function(
        'test', 'test_env', 'python3',  'main.handler',
        codeDir='/path/to/code/', environmentVariables={'newKey': 'newValue'})
    res = client.get_function('test', 'test_env')
    print(res.data)           
  • 获取环境变量

    resp = client.get_function('test', 'test_env')
    env = func['environmentVariables']

在代码中使用环境变量

假设配置的环境变量为{"key":"val"},以下为各运行环境读取并打印此环境变量值的方法。

var value = process.env.key
console.log(value)
import os
value = os.environ.get('key')
print(value)
System.out.println("value: "+ System.getenv("key"));
$value = getenv('key');
Console.WriteLine(Environment.GetEnvironmentVariable("key"));

常见问题

可以为函数的不同版本设置不同的环境变量吗?

可以。您在LATEST版本设置环境变量后,发布版本,然后修改环境变量,这样LATEST版本和发布的新版本的环境变量就不相同。

想要控制台不明文显示环境变量的值如何处理?配置环境变量时如何加密敏感数据?

您可以将环境变量存储在密钥管理服务中,确保敏感信息以加密形式存储,执行函数前,通过调用KMS的服务接口,对存储的加密环境变量进行解密,解密后将环境变量设置到函数的运行环境中。更多信息,请参见什么是密钥管理服务。

相关文章

管理函数 2025-04-16 14:22

函数计算的资源调度与运行以函数为单位。一个服务下可以创建多个函数,这些函数彼此相互独立,互不影响,但这些函数可以共享一些相同的设置,例如服务授权和日志配置等。您可以通过函数计算控制台创建函数、更新函数及获取函数ARN等。

为函数安装第三方依赖 2025-04-16 14:22

函数计算运行环境中已内置常用的依赖,供您直接在函数中引用。同时,函数计算支持使用第三方依赖。本文介绍如何为函数安装第三方依赖。

环境变量 2025-04-16 14:22

您可以使用环境变量,在不修改代码的前提下灵活调整FC函数的行为。环境变量作为函数配置的一部分,以字符串键值对的方式存储,不同函数拥有独立的环境变量。本文介绍环境变量的基本信息、配置方式以及如何在代码中使用环境变量等。

在函数中配置自定义DNS 2025-04-16 14:22

自定义DNS功能适用于加速站点访问等场景,本文介绍如何在函数计算控制台为函数配置自定义DNS。 背景信息

函数性能探测 2025-04-16 14:22

性能探测可以得到单个实例的性能上限(即最大能承受的QPS),并给出满足端到端延迟限制的最佳并发度值,帮助您解决配置并发度的难题。另外,使用推荐的实例规格,能够降低使用成本。本文介绍如何创建函数压测任务和查看压测结果详情。 使用限制</

创建自定义层 2025-04-16 14:22

层可以为您提供公共依赖库、运行时环境及函数扩展等发布与部署能力。您可以将函数依赖的公共库提炼到层或者使用函数计算官方公共层,以减少部署或更新函数时的代码包体积。本文介绍层的注意事项、各运行时使用层说明、如何构建层的ZIP包以及如何创建、删除自定义层。

目录
Copyright © 2025 your company All Rights Reserved. Powered by 赛尔网络.
京ICP备14022346号-15
gongan beian 京公网安备11010802041014号