AWS Lambda環境変数対応を早速使ってみる
皆様待っていた機能ですよね。Lambdaの環境変数対応の記事はこちら
これで開発と商用の設定環境差などのコーディング部分が便利になりますね。
個人的には、デバッグ用のlog出力 level flagとか、接続情報をハードコーディングしなくてもよくなるのにも便利かなと思っています。
環境変数名の制約
数に制約はなく、Total 4KB
アルファベットで始まる必要があり、a-zA-z0-9_なので、記号は"_"のみ利用可能
予約名もありますので、以下のKey名は利用不可
AWS_ACCESS_KEY_ID
AWS_SECRET_ACCESS_KEY
AWS_SESSION_TOKEN
AWS_ACCESS_KEY
AWS_SECRET_KEY
AWS_SECURITY_TOKEN
AWS_DEFAULT_REGION
AWS_REGION
AWS_LAMBDA_LOG_GROUP_NAME
AWS_LAMBDA_LOG_STREAM_NAME
AWS_LAMBDA_FUNCTION_NAME
AWS_LAMBDA_FUNCTION_MEMORY_SIZE
AWS_LAMBDA_FUNCTION_VERSION
LAMBDA_TASK_ROOT
LAMBDA_RUNTIME_DIR
最新の情報は必ず公式をご確認ください。
環境変数の設定
KeyValueで設定します。
GUIからはコードエディタの下に環境変数部が追加されています。とりあえず Keyに"env" Valueに"prd"を設定してみます。
CLIからは、こちらのsetting upをご参考に。
とりあえずの取得までの流れです
当たり前ですが、環境変数としてとれます。。pythonでのサンプル
import os
def lambda_handler(event, context):
# TODO implement
print '---all env value---'
for i in os.environ.items():
print i
print '---get target---'
print os.environ['env']
return
結果
---all env value---
('AWS_LAMBDA_FUNCTION_VERSION', '$LATEST')
('LAMBDA_TASK_ROOT', '/var/task')
('PATH', '/usr/local/bin:/usr/bin/:/bin')
('LD_LIBRARY_PATH', '/lib64:/usr/lib64:/var/runtime:/var/runtime/lib:/var/task:/var/task/lib')
('LANG', 'en_US.UTF-8')
('AWS_LAMBDA_FUNCTION_NAME', 'Just_print_event')
('AWS_REGION', 'us-west-2')
('AWS_SESSION_TOKEN', 'xxxxx')
('AWS_SECURITY_TOKEN', 'xxxxxxx')
('LAMBDA_RUNTIME_DIR', '/var/runtime')
('AWS_LAMBDA_FUNCTION_MEMORY_SIZE', '128')
('env', 'prd')
('PYTHONPATH', '/var/runtime')
('AWS_LAMBDA_LOG_GROUP_NAME', '/aws/lambda/Just_print_event')
('AWS_LAMBDA_LOG_STREAM_NAME', '2016/11/19/[$LATEST]')
('AWS_ACCESS_KEY_ID', 'xxxxxxxxxxxxxxxxxxxxxxxxx')
('AWS_DEFAULT_REGION', 'us-west-2')
('AWS_SECRET_ACCESS_KEY', 'xxxxxxxxxxxxxxxxxxxxxx')
---get target---
prd
注意事項
DBへの接続パスワードなどの機密情報は平文で置かないように推奨されています。
KMSなどを利用した暗号化処理の検討をしましょう!
Storing Sensitive Information
For sensitive information, such as database passwords, we recommend you use client-side encryption using AWS Key Management Service and store the resulting values as Ciphertext in your environment variable. You will need to include logic in your Lambda function code to decrypt these values.
免責
本投稿は、個人の意見で、所属する企業や団体は関係ありません。
また掲載しているsampleプログラムの動作に関しても保障いたしませんので、参考程度にしてください。