Lambda 環境変数を使用したコードの値の設定
環境変数を使用すると、コードを更新せずに関数の動作を調整できます。環境変数は、関数のバージョン固有の設定に保存される文字列のペアです。Lambda ランタイムは、環境変数をコードで使用できるようにし、関数と呼び出しリクエストに関する情報を含む追加の環境変数を設定します。
注記
セキュリティを強化するには、環境変数の代わりに AWS Secrets Manager を使用してデータベースの認証情報や (API キーや認証トークンなど) その他の機密情報を保存することをお勧めします。詳細については、「AWS Secrets Manager を使用したシークレットの作成および管理」を参照してください。
環境変数は、関数を呼び出す前には評価されません。定義した値はリテラル文字列とみなされ、展開されません。関数コードで変数の評価を実行します。
Lambda コンソール、AWS Command Line Interface (AWS CLI)、AWS Serverless Application Model (AWS SAM)、または AWS SDK を使用して、Lambda で環境変数を設定できます。
定義されたランタイム環境変数
Lambda ランタイムは、初期化中にいくつかの環境変数を設定します。ほとんどの環境変数は、関数またはランタイムに関する情報を提供します。これらの環境変数のキーは予約済みであるため、関数設定では設定できません。
予約済み環境変数
-
_HANDLER
- 関数に設定されているハンドラの場所。 -
_X_AMZN_TRACE_ID
- X-Ray トレースヘッダー。この環境変数は呼び出しごとに変化します。-
この環境変数は OS 専用ランタイム (
provided
ランタイムファミリー) には定義されていません。カスタムランタイムには 次の呼び出し からのLambda-Runtime-Trace-Id
レスポンスのヘッダーに_X_AMZN_TRACE_ID
を設定できます。 -
Java ランタイムバージョン 17 以降では、この環境変数は使用されません。代わりに、Lambda はトレース情報を
com.amazonaws.xray.traceHeader
システムプロパティに保存します。
-
-
AWS_DEFAULT_REGION
- Lambda 関数が実行されるデフォルトの AWS リージョン。 -
AWS_REGION
- Lambda 関数が実行される AWS リージョン。定義されている場合、この値はAWS_DEFAULT_REGION
を上書きします。-
AWS SDK での AWS リージョン 環境変数を使用する方法の詳細については、「AWS SDK とツールリファレンスガイド」の「AWSリージョン」を参照してください。
-
-
AWS_EXECUTION_ENV
–AWS_Lambda_
(例:AWS_Lambda_java8
) のプレフィックスが付いたランタイム識別子。この環境変数は OS 専用ランタイム (provided
ランタイムファミリー) には定義されていません。 -
AWS_LAMBDA_FUNCTION_NAME
- 関数の名前。 -
AWS_LAMBDA_FUNCTION_MEMORY_SIZE
- 関数で使用できるメモリの量 (MB 単位)。 -
AWS_LAMBDA_FUNCTION_VERSION
- 実行される関数のバージョン。 -
AWS_LAMBDA_INITIALIZATION_TYPE
- 関数の初期化タイプ。これは、on-demand
、provisioned-concurrency
、またはsnap-start
になります。詳細については、「プロビジョニングされた同時実行の設定」または「Lambda SnapStart による起動パフォーマンスの向上」を参照してください。 -
AWS_LAMBDA_LOG_GROUP_NAME
、AWS_LAMBDA_LOG_STREAM_NAME
- Amazon CloudWatch Logs グループの名前と関数のストリーム。AWS_LAMBDA_LOG_GROUP_NAME
およびAWS_LAMBDA_LOG_STREAM_NAME
の環境変数は Lambda SnapStart 関数では使用できません。 -
AWS_ACCESS_KEY
、AWS_ACCESS_KEY_ID
、AWS_SECRET_ACCESS_KEY
、AWS_SESSION_TOKEN
– 関数の実行ロールから取得したアクセスキー。 -
LAMBDA_TASK_ROOT
- Lambda 関数コードへのパス。 -
LAMBDA_RUNTIME_DIR
- ランタイムライブラリへのパス。
以下の追加の環境変数は予約されていないため、関数設定で拡張できます。
予約されていない環境変数
-
LANG
- ランタイムのロケール (en_US.UTF-8
)。 -
PATH
- 実行パス (/usr/local/bin:/usr/bin/:/bin:/opt/bin
)。 -
LD_LIBRARY_PATH
- システムライブラリのパス (/var/lang/lib:/lib64:/usr/lib64:$LAMBDA_RUNTIME_DIR:$LAMBDA_RUNTIME_DIR/lib:$LAMBDA_TASK_ROOT:$LAMBDA_TASK_ROOT/lib:/opt/lib
)。 -
NODE_PATH
- (Node.js) Node.js ライブラリのパス (/opt/nodejs/node12/node_modules/:/opt/nodejs/node_modules:$LAMBDA_RUNTIME_DIR/node_modules
)。 -
PYTHONPATH
- (Python 2.7、3.6、3.8) Python ライブラリのパス ($LAMBDA_RUNTIME_DIR
)。 -
GEM_PATH
- (Ruby) Ruby ライブラリのパス ($LAMBDA_TASK_ROOT/vendor/bundle/ruby/2.5.0:/opt/ruby/gems/2.5.0
)。 -
AWS_XRAY_CONTEXT_MISSING
- X-Rayトレースの場合、Lambda は X-Ray SDK からランタイムエラーがスローされないように、これをLOG_ERROR
に設定します。 -
AWS_XRAY_DAEMON_ADDRESS
- X-Ray トレーシングの場合、X-Ray デーモンの IP アドレスとポート。 -
AWS_LAMBDA_DOTNET_PREJIT
- .NET 6 と .NET 7 ランタイムの場合、この変数を設定して、.NET 固有のランタイムの最適化を有効または無効にします。値にはalways
、never
、およびprovisioned-concurrency
があります。詳細については、「関数に対するプロビジョニングされた同時実行数の設定」を参照してください。 -
TZ
- 環境のタイムゾーン (:UTC
)。実行環境は、システムクロックを同期するために NTP を使用します。
表示されるサンプル値は、最新のランタイムを反映しています。特定の変数やその値の有無は、以前のランタイムでは異なる場合があります。
環境変数のシナリオ例
環境変数を使用して、テスト環境および本番環境における関数の動作をカスタマイズできます。例えば、同じコードでも設定が異なる 2 つの関数を作成できます。1 つの関数はテストデータベースに接続し、もう 1 つはプロダクションデータベースに接続します。この状況では、環境変数を使用して、データベースのホスト名とその他の接続に関する詳細を関数に渡します。
次の例は、データベースホストとデータベース名を環境変数として定義する方法を示しています。
![Lambda コンソールの環境変数。](images/console-env.png)
テスト環境で本番環境よりも多くのデバッグ情報を生成する場合は、環境変数を設定して、より詳細なログ記録またはトレースを使用するようにテスト環境を設定できます。