LoginSignup
13
16

More than 5 years have passed since last update.

AWS Lambda環境変数対応をお触り

Last updated at Posted at 2016-11-19

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"を設定してみます。
スクリーンショット 2016-11-19 10.11.02.png

CLIからは、こちらのsetting upをご参考に。

とりあえずの取得までの流れです

当たり前ですが、環境変数としてとれます。。pythonでのサンプル

just_print.py
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プログラムの動作に関しても保障いたしませんので、参考程度にしてください。

13
16
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
16