AWS Lambdaではユーザが環境変数を設定することができますが、Lambdaの初期化中に設定されるランタイム環境変数というものもあります。
ランタイム環境変数は予約済み環境変数と予約されていないが関数設定で拡張可能な環境変数があります。
今回は予約済み環境変数について実際にLambdaから見てみたので、備忘として残しておきます。
尚、LambdaのランタイムはPyhton3.7を使っています。
実施作業
関数作成
細かな作成手順は省略しますが、シンプルに以下のような関数を作成しました。
取得対象は、本記事冒頭に貼ったAWS公式リンクの中にあります。
import os def lambda_handler(event, context): env_list=[] env_list.append(os.getenv("_HANDLER")) env_list.append(os.getenv("_X_AMZN_TRACE_ID")) env_list.append(os.getenv("AWS_REGION")) env_list.append(os.getenv("AWS_EXECUTION_ENV")) env_list.append(os.getenv("AWS_LAMBDA_FUNCTION_NAME")) env_list.append(os.getenv("AWS_LAMBDA_FUNCTION_MEMORY_SIZE")) env_list.append(os.getenv("AWS_LAMBDA_FUNCTION_VERSION ")) env_list.append(os.getenv("AWS_LAMBDA_INITIALIZATION_TYPE")) env_list.append(os.getenv("AWS_LAMBDA_LOG_GROUP_NAME")) env_list.append(os.getenv("AWS_LAMBDA_LOG_STREAM_NAME")) env_list.append(os.getenv("AWS_ACCESS_KEY_ID")) env_list.append(os.getenv("AWS_SECRET_ACCESS_KEY")) env_list.append(os.getenv("AWS_SESSION_TOKEN")) env_list.append(os.getenv("LAMBDA_TASK_ROOT")) env_list.append(os.getenv("LAMBDA_RUNTIME_DIR")) env_list.append(os.getenv("TZ")) for env in env_list: print(env)
関数実行
実行した結果は以下のようになりました。
lambda_function.lambda_handler Root=1-6045bb70-03dca...[長いので省略]...c3d228;Parent=21aa75f03f8d24af;Sampled=0 ap-northeast-1 AWS_Lambda_python3.7 lambda-test 128 None on-demand /aws/lambda/lambda-test 2021/03/08/[$LATEST]40b13d2a1e354901a43870960926072c ASIA5WU...[長いので省略]...JZ3WUGA63 yhPI...[長いので省略]...XkA== /var/task /var/runtime :UTC
表にするとこんな感じです
環境変数名 | 出力値 |
_HANDLER | lambda_function.lambda_handler |
_X_AMZN_TRACE_ID | Root=1-6045bb70-03dca...[長いので省略]...c3d228;Parent=21aa75f03f8d24af;Sampled=0 |
AWS_REGION | ap-northeast-1 |
AWS_EXECUTION_ENV | AWS_Lambda_python3.7 |
AWS_LAMBDA_FUNCTION_NAME | lambda-test |
AWS_LAMBDA_FUNCTION_MEMORY_SIZE | 128 |
AWS_LAMBDA_FUNCTION_VERSION | None |
AWS_LAMBDA_INITIALIZATION_TYPE | on-demand |
AWS_LAMBDA_LOG_GROUP_NAME | /aws/lambda/lambda-test |
AWS_LAMBDA_LOG_STREAM_NAME | 2021/03/08/[$LATEST]40b13d2a1e354901a43870960926072c |
AWS_ACCESS_KEY_ID | ASIA5WU...[長いので省略]...JZ3WUGA63 |
AWS_SECRET_ACCESS_KEY | yhPIMDgfk...[長いので省略]...//Ar4c |
AWS_SESSION_TOKEN | IQoJb...[長いので省略]...XkA== |
LAMBDA_TASK_ROOT | /var/task |
LAMBDA_RUNTIME_DIR | /var/runtime |
TZ | :UTC |
各予約済みランタイム環境変数についての説明は以下です。(公式リンクに書いてます)
_HANDLER | 関数に設定されているハンドラーの場所。 |
_X_AMZN_TRACE_ID | X-Ray トレースヘッダー。 |
AWS_REGION | Lambda 関数を実行する AWS リージョン。 |
AWS_EXECUTION_ENV | AWS_Lambda_ のプレフィックスが付いたランタイム識別子 (例: AWS_Lambda_java8)。 |
AWS_LAMBDA_FUNCTION_NAME | 関数の名前。 |
AWS_LAMBDA_FUNCTION_MEMORY_SIZE | 関数で使用できるメモリの量 (MB 単位)。 |
AWS_LAMBDA_FUNCTION_VERSION | 実行される関数のバージョン。 |
AWS_LAMBDA_INITIALIZATION_TYPE | on-demand または provisioned-concurrency のいずれかがで指定される。 |
AWS_LAMBDA_LOG_GROUP_NAME、AWS_LAMBDA_LOG_STREAM_NAME | Amazon CloudWatch Logs グループの名前と関数のストリーム。 |
AWS_ACCESS_KEY_ID、AWS_SECRET_ACCESS_KEY、AWS_SESSION_TOKEN | 関数の実行ロールから取得したアクセスキー。 |
AWS_LAMBDA_RUNTIME_API | (カスタムランタイム) ランタイム API のホストおよびポート。 |
LAMBDA_TASK_ROOT | Lambda 関数コードへのパス。 |
LAMBDA_RUNTIME_DIR | ランタイムライブラリへのパス。 |
TZ | 環境のタイムゾーン (UTC)。実行環境は、システムクロックを同期するために NTP を使用します。 |