すべてのプロダクト
Search
ドキュメントセンター

Function Compute:環境変数の設定

最終更新日:Apr 21, 2026

環境変数を使用すると、コードを変更することなく FC 関数の動作を調整できます。環境変数は、関数の構成に保存される文字列のキーと値のペアです。各関数には、独自の環境変数のセットがあります。このトピックでは、環境変数の基本と設定方法について説明します。

セキュリティ

環境変数を作成または更新すると、Function Compute は高度暗号化標準 256 (AES-256) を使用して保存時に暗号化します。関数インスタンスが初期化されると、変数は復号され、インスタンス環境に挿入されます。

制限事項

  • 文字セットのルール

    • キーは文字で始まる必要があり、文字、数字、アンダースコア (_) のみを含めることができます。

  • サイズ制限

    すべての環境変数の合計サイズは 4 KB を超えることはできません。

  • 予約済みシステム環境変数

    システムの競合を防ぐため、予約済みのプレフィックス FC_* を持つ環境変数は使用できません。

    FC は、次のシステム環境変数をサポートしています。

    • FC_FUNC_CODE_PATH:コードのデプロイメントディレクトリ。

    • ALIBABA_CLOUD_ACCESS_KEY_IDALIBABA_CLOUD_ACCESS_KEY_SECRET、および ALIBABA_CLOUD_SECURITY_TOKEN:関数の実行ロールから取得した一時的な認証情報。AccessKey ID、AccessKey Secret、および一時的なトークンが含まれます。

    • FC_ACCOUNT_ID:ユーザー ID。

    • FC_FUNCTION_HANDLER:関数ハンドラ。

    • FC_FUNCTION_MEMORY_SIZE:関数に設定されたメモリサイズ (MB)。

    • FC_FUNCTION_NAME:関数名。

    • FC_REGION:関数が存在するリージョン。

    • FC_CUSTOM_LISTEN_PORT:関数のカスタムリスニングポート。

    • FC_INSTANCE_ID:関数インスタンスの ID。

    • FC_VER_ID:関数バージョンの ID。この変数は、Debian 10 以前の組み込みランタイムで利用できます。

    • FC_FUNCTION_VERSION:関数バージョンの ID。この変数は、Debian 11 以降の組み込みランタイムで利用できます。

利用シーン

  • プラットフォームやサービス間でコードを共有する

    環境変数を使用して、テスト環境と本番環境で異なる構成を管理できます。たとえば、異なる Object Storage Service (OSS) バケット、データベース、またはテーブルを指定できます。これにより、同じコードベースを修正することなく、複数のプラットフォームにデプロイできます。

  • 認証情報を設定する

    データベース接続の認証情報、Alibaba Cloud AccessKey、またはその他の機密性の高い認証情報を環境変数を使用して設定できます。

  • システム変数を設定する

    PATH や HOME などのディレクトリを設定することで、システムライブラリをより柔軟に使用できます。

環境変数の設定

コンソール

前提条件

関数が作成されていること。詳細については、「関数の作成」をご参照ください。

操作手順

  1. Function Compute コンソールにログインします。左側のナビゲーションウィンドウで、関数管理 > 関数リスト を選択します。

  2. 上部のナビゲーションバーで、リージョンを選択します。関数リスト ページで、対象の関数をクリックします。

  3. 関数の詳細ページで、設定 タブをクリックし、詳細設定 セクションで 変更 をクリックします。

  4. 詳細設定 パネルの 環境変数 で、次のいずれかの方法で変数を設定し、デプロイ をクリックします。

    • フォームエディターを使用する

      1. [+ 変数を追加] をクリックします。

      2. 環境変数のキーと値のペアを設定します。

        • 変数:カスタムキーを入力します。

        • :カスタム値を入力します。

    • 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 がインストールされ、設定されていること。詳細については、「クイックスタート」をご参照ください。

操作手順

  1. テスト用のコードディレクトリ (例:test) を作成します。

  2. test ディレクトリに移動し、index.py ファイルと s.yaml ファイルを作成します。

    コードディレクトリの構造は次のとおりです。

    .
    ├── code
    │   └── index.py
    └── s.yaml

    index.py ファイルには、関数コードが含まれています。サンプルコードについては、「コンソール」セクションの例をご参照ください。

    s.yaml ファイルは、関数の構成ファイルです。以下に例を示します。

    edition: 3.0.0
    name: hello-world-app
    # access: アプリケーションに必要な認証情報を指定します。
    # 認証情報の設定方法の詳細については、https://www.serverless-devs.com/serverless-devs/command/config をご参照ください。
    # 認証情報の優先順位の詳細については、https://www.serverless-devs.com/serverless-devs/tool#credential-priority-and-specifications をご参照ください。
    access: "default"
    
    vars: # グローバル変数
      region: "cn-hangzhou"
    
    resources:
      hello_world:
        # hello_world のような特定のサービスに対してのみ操作を実行するには、コマンドでその名前を指定します。例:
        # hello_world サービスのみをビルドする場合:s hello_world build
        # サービスを指定せずに s build コマンドを実行すると、Serverless Devs は YAML ファイル内で hello_world と同じレベルにあるすべてのサービスに対してビルド操作を実行します。
        component: fc3 # コンポーネント名。Serverless Devs はコンポーネントを使用して機能を拡張します。このコンポーネントは Function Compute の機能を有効にします。
        # actions: # カスタム実行ロジック。詳細については、https://docs.serverless-devs.com/serverless-devs/yaml#actions をご参照ください。
        props:
          region: ${vars.region} # 変数の使用方法の詳細については、https://docs.serverless-devs.com/serverless-devs/yaml#variable-assignment をご参照ください。
          functionName: envdemo # envdemo という名前の関数を宣言します。
          description: 'hello world by serverless devs'
          runtime: python3 # 関数のランタイムを指定します。
          code: ./code
          handler: index.handler # 関数のハンドラを指定します。
          memorySize: 128
          timeout: 30
          environmentVariables: # 関数に 2 つの環境変数を設定します。
              BUCKET_NAME: MY_BUCKET
              TABLE_NAME: MY_TABLE
          codeUri: ./ # 現在のディレクトリ「./」から関数をデプロイします。デプロイ中、Serverless Devs は現在のディレクトリをパッケージ化してアップロードします。
  3. s deploy コマンドを実行してプロジェクトをデプロイします。

    デプロイが成功したら、Function Compute コンソールにログインして、作成された関数とその環境変数を確認できます。

SDK

次の例では Python SDK を使用します。environmentVariables パラメーターは辞書を受け入れ、環境変数を指定します。サンプルコードは、環境変数の作成、更新、および取得方法を示しています。

  • 環境変数の作成

    # coding: utf-8
    import fc2
    import os
    
    client = fc2.Client(
        endpoint='your endpoint', # エンドポイント。
        # コードに AccessKey ID と AccessKey Secret を保存しないことを推奨します。
        # このような機密情報が漏洩すると、リソースのセキュリティが損なわれる可能性があります。
        # この例では、認証に環境変数を使用します。
        # このコードを実行する前に、ローカルで 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'} # 設定する環境変数。
    )
    
    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)
$value = getenv('key');
System.out.println("value: "+ System.getenv("key"));
string value = Environment.GetEnvironmentVariable("key");
Console.WriteLine("value: {0}", value);
var value = os.Getenv("key")
fmt.Printf("value: %s\n", value)

よくある質問

関数バージョンごとに異なる環境変数を設定できますか?

はい。LATEST バージョンの環境変数を設定し、新しいバージョンを公開した後、LATEST バージョンの変数を変更できます。これにより、LATEST バージョンは公開されたバージョンとは異なる設定を持つことになります。

コンソールで環境変数の値がプレーンテキストで表示されないようにするにはどうすればよいですか?機密データを暗号化するにはどうすればよいですか?

環境変数を Key Management Service に保存することで、機密情報が暗号化されて保存されるようにできます。関数が実行される前に、コードは KMS API を呼び出して情報を復号し、関数の実行環境に設定できます。詳細については、「Key Management Service (KMS) とは」をご参照ください。

環境変数を使用してタイムゾーンを変更するにはどうすればよいですか?

関数を作成するときに、タイムゾーンを選択できます。デフォルトでは、関数インスタンスは協定世界時 (UTC) で実行されます。関数が作成された後、TZ 環境変数を設定することでタイムゾーンを変更できます。たとえば、中国標準時 (UTC+8) を使用するには、TZAsia/Shanghai に設定します。