edit-icon download-icon

環境変数

最終更新日: Jan 11, 2019

環境変数によって関数のコードと設定は分けられ、コードの柔軟性と移植性が高まります。Function Compute では、設定をハードコーディングする代わりに、環境変数の使用により、設定を関数コードに動的に引き渡すことができます。環境変数は、関数コードの一部として、お客様が作成し、変更するキーと値の組み合わせです。同じ環境変数を異なる関数に作成することはできますが、各環境変数はそれぞれに独立しています。

個人情報は機密性の高いデータです。Function Compute で作成あるいは変更した環境変数は、AES-256 (Advanced Encryption Standard 256) で暗号化されます。関数を呼び出す際に、Function Compute によって環境変数は自動的に復号化されます。

シナリオ

  • 関数を異なるプラットフォームにデプロイ: テスト環境と本番環境とでは、同じコードを設定を変えて実行する必要がよくあります。関数の参照する OSS バケット、データベース、テーブルを環境変数で変えることができます。異なるプラットフォームで実行する際、関数コードを変更する必要がありません。

  • AccessKeys を設定: データベースのユーザー名およびパスワード、Alibaba Cloud アカウントの AccessKey といった機密性の高い認証情報を環境変数で設定できます。

  • システム変数を設定: PATH や HOME ディレクトリを環境変数で設定することで、システムライブラリをより柔軟に使用することができます。

制約事項

  • キーと値の命名規則
    • キー: 英字 [a-zA-Z] で始まる必要があります。使用可能な文字は、[a-zA-Z0-9_] のみです。
    • 値: 表示可能な ASCII 文字列にする必要があります。漢字、平仮名、片仮名といった文字は使用できません。
  • サイズ制限: 環境変数は合計 4 KB 以下である必要があります。
  • システム予約変数: Function Compute の予約変数を使用することはできません。システム予約変数には、FC_*accessKeyIDaccessKeySecretsecurityTokenおよびtopicがあります。

コンソールで環境変数を設定

  1. Function Compute コンソールにログインします。

  2. リージョンを選択します。

    Select a region

  3. サービスを選択します。

  4. 変数を編集します。

    • 新規関数の場合

      1. 左側のナビゲーションペインより、関数の作成 アイコンをクリックします。

      2. 関数テンプレート および トリガーの設定 ページを設定します。関数の設定ページの環境変数欄で、キーと値を指定します。

        New functions

    • 既存の関数の場合

      1. 該当する関数を見つけます。

      2. 関数プロパティ欄の 編集 をクリックします。表示されるダイアログボックスの環境変数欄で、キーと値を指定します。

        Existing functions

      3. OK をクリックします。

テスト環境変数

コンソールより、次のコードを記述して検証します。

  1. module.exports.handler = function(event, context, callback) {
  2. var bucket_name = process.env['BUCKET_NAME']
  3. var table_name = process.env['TABLE_NAME']
  4. console.log('BUCKET_NAME: ',bucket_name)
  5. console.log('TABLE_NAME: ',table_name)
  6. callback(null, "success")
  7. }

次のログは、環境変数が作成されたことを示しています。Console test 3

SDK を使用して環境変数を設定

環境変数を作成

Python SDK での環境変数パラメータはenvironmentVariablesです。パラメータの値は、辞書に格納されます。下記は、環境変数を含む、関数コード例です。

  1. # coding: utf-8
  2. import fc2
  3. client = fc2. Client(
  4. endpoint='your endpoint',
  5. accessKeyID='your accessKeyID',
  6. accessKeySecret='your accessKeySecret')
  7. client.create_service('test')
  8. client.create_function(
  9. 'test', 'test_env', 'python2.7', 'main.handler',
  10. codeDir='/path/to/code/', environmentVariables={'testKey': 'testValue'})
  11. res = client.get_function('test', 'test_env')
  12. print res.data

環境変数を変更

update_function コマンドを実行して環境変数を変更します。

  1. client.update_function(
  2. 'test', 'test_env', 'python2.7', 'main.handler',
  3. codeDir='/path/to/code/', environmentVariables={'newKey': 'newValue'})
  4. res = client.get_function('test', 'test_env')
  5. print res.data