環境変数によって関数のコードと設定は分けられ、コードの柔軟性と移植性が高まります。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_*
、accessKeyID
、accessKeySecret
、securityToken
およびtopic
があります。
コンソールで環境変数を設定
Function Compute コンソールにログインします。
リージョンを選択します。
サービスを選択します。
変数を編集します。
新規関数の場合
左側のナビゲーションペインより、関数の作成 アイコンをクリックします。
関数テンプレート および トリガーの設定 ページを設定します。関数の設定ページの環境変数欄で、キーと値を指定します。
既存の関数の場合
該当する関数を見つけます。
関数プロパティ欄の 編集 をクリックします。表示されるダイアログボックスの環境変数欄で、キーと値を指定します。
OK をクリックします。
テスト環境変数
コンソールより、次のコードを記述して検証します。
module.exports.handler = function(event, context, callback) {
var bucket_name = process.env['BUCKET_NAME']
var table_name = process.env['TABLE_NAME']
console.log('BUCKET_NAME: ',bucket_name)
console.log('TABLE_NAME: ',table_name)
callback(null, "success")
}
次のログは、環境変数が作成されたことを示しています。
SDK を使用して環境変数を設定
環境変数を作成
Python SDK での環境変数パラメータはenvironmentVariables
です。パラメータの値は、辞書に格納されます。下記は、環境変数を含む、関数コード例です。
# coding: utf-8
import fc2
client = fc2. Client(
endpoint='your endpoint',
accessKeyID='your accessKeyID',
accessKeySecret='your accessKeySecret')
client.create_service('test')
client.create_function(
'test', 'test_env', 'python2.7', 'main.handler',
codeDir='/path/to/code/', environmentVariables={'testKey': 'testValue'})
res = client.get_function('test', 'test_env')
print res.data
環境変数を変更
update_function
コマンドを実行して環境変数を変更します。
client.update_function(
'test', 'test_env', 'python2.7', 'main.handler',
codeDir='/path/to/code/', environmentVariables={'newKey': 'newValue'})
res = client.get_function('test', 'test_env')
print res.data