使用 Lambda 環境變數
您可以使用環境變數來調整函數的行為,而無需更新程式碼。環境變數是存放在函數特定版本組態中的一對字串。Lambda 執行時間可讓程式碼使用環境變數,並設定其他環境變數,這些變數包含函數和調用請求的相關資訊。
注意
為了提高安全性,建議您使用 AWS Secrets Manager 而非環境變數來存放資料庫憑證和其他敏感資訊,例如 API 金鑰或授權字符。如需更多詳細資訊,請參閱 在 Lambda 函式中使用 Secrets Manager 秘密。
在函數調用之前,不會評估環境變數。您定義的任何值都會視為文字字串,而且不會展開。在函數程式碼中執行變數評估。
建立 Lambda 環境變數
可以使用 Lambda 主控台、AWS Command Line Interface (AWS CLI)、AWS Serverless Application Model (AWS SAM) 或使用 AWS SDK 在 Lambda 中設定環境變數。
環境變數的範例案例
您可以使用環境變數,自訂測試環境和生產環境中的函數行為。例如,您可以建立兩個具備相同程式碼,但不同組態的函數。一個函數連接到測試資料庫,另一個函數連接到生產資料庫。在此情況下,可以使用環境變數將資料庫的主機名稱和其他連線詳細資訊傳遞給函數。
以下範例顯示如何將資料庫主機和資料庫名稱定義為環境變數。
如果您希望測試環境產生比實際執行環境更多的偵錯資訊,您可以設定環境變數,以將測試環境設定為使用更詳細的記錄或更詳細的追蹤。
例如,在測試環境中,您可以使用 LOG_LEVEL 索引鍵與表示偵錯或追蹤日誌層級的值來設定環境變數。在 Lambda 函式的程式碼中,您可以使用此環境變數來設定日誌層級。
下列 Python 與 Node.js 語言程式碼範例示範可如何完成此操作。這些範例假設環境變數在 Python 中的值為 DEBUG,在 Node.js 中的值為 debug。
擷取 Lambda 環境變數
若要在函數程式碼中擷取環境變數,請使用程式設計語言的標準方法。
Lambda 透過靜態加密環境變數來安全地存放它們。您可以設定 Lambda 以使用不同的加密金鑰、加密用戶端的環境變數,或使用 AWS Secrets Manager 在 CloudFormation 範本中設定環境變數。
定義執行時間環境變數
Lambda 執行時間會在初始化期間設定數個環境變數。大多數的環境變數都會提供函數或執行時間的資訊。這些環境變數的索引鍵都已進行預留,無法在您的函數組態中設定。
預留環境變數
-
_HANDLER- 在函數中設定的處理常式位置。 -
_X_AMZN_TRACE_ID- X-Ray 追蹤標頭。此環境變數會隨著每次調用而變更。-
未針對僅限作業系統的執行期 (
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 區域 環境變數與 AWS SDK 的詳細資訊,請參閱《AWS SDK 和工具參考指南》中的 AWS 區域。
-
-
AWS_EXECUTION_ENV– 執行時間識別符,字首為AWS_Lambda_(例如,AWS_Lambda_java8)。未針對僅限作業系統的執行期 (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)。 -
NODE_OPTIONS– (Node.js) 對於 Node.js 執行時期,您可以使用NODE_OPTIONS來重新啟用 Lambda 預設停用的實驗性功能。 -
PYTHONPATH– (Python) Python 程式庫路徑 ($LAMBDA_RUNTIME_DIR)。 -
GEM_PATH- (Ruby) Ruby 程式庫路徑 ($LAMBDA_TASK_ROOT/vendor/bundle/ruby/3.3.0:/opt/ruby/gems/3.3.0)。 -
AWS_XRAY_CONTEXT_MISSING- 對於 X-Ray 追蹤,Lambda 將它設定為LOG_ERROR,以避免從 X-Ray 開發套件中擲回執行時間錯誤。 -
AWS_XRAY_DAEMON_ADDRESS- 對於 X-Ray 追蹤,為 X-Ray 常駐程式的 IP 地址和連接埠。 -
AWS_LAMBDA_DOTNET_PREJIT– (.NET) 設定此變數,以啟用或停用 .NET 特定執行時期最佳化。值包含always、never和provisioned-concurrency。如需更多詳細資訊,請參閱 設定函數的佈建並行。 -
TZ– 環境的時區 (:UTC)。執行環境使用 NTP 來同步系統時鐘。
顯示的範例值會反映最新的執行時間。特定變數或其值是否存在,可能會因先前的執行時間而有所不同。