本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用 Lambda 環境變數來設定程式碼中的值
您可以使用環境變數來調整函數的行為,而無需更新程式碼。環境變數是存放在函數特定版本組態中的一對字串。Lambda 執行時間可讓程式碼使用環境變數,並設定其他環境變數,這些變數包含函數和調用請求的相關資訊。
注意
為了提高安全性,我們建議您不要使 AWS Secrets Manager 用環境變數來儲存資料庫認證和其他敏感資訊,例如API金鑰或授權 Token。如需詳細資訊,請參閱使用建立和管理密碼 AWS Secrets Manager。
在函數調用之前,不會評估環境變數。您定義的任何值都會視為文字字串,而且不會展開。在函數程式碼中執行變數評估。
您可以使用 Lambda 主控台 AWS Command Line Interface (AWS CLI)、 AWS Serverless Application Model (AWS SAM) 或使用 AWS SDK.
定義執行時間環境變數
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 SDKs,請參閱《AWS SDKs和工具參考指南》中的〈Re AWS gion〉。
-
-
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 日誌群組和資料流的名稱。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
- 從函數的執行角色中取得的存取金鑰。 -
AWS_LAMBDA_RUNTIME_API
— (自訂執行階段) 執行階段的主機和連接埠API。 -
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 將其設定LOG_ERROR
為避免從 X-Ray 擲回執行階段錯誤SDK。 -
AWS_XRAY_DAEMON_ADDRESS
- 對於 X-Ray 追蹤,為 X-Ray 常駐程式的 IP 地址和連接埠。 -
AWS_LAMBDA_DOTNET_PREJIT
— 對於. NET6 和. NET7 運行時,將此變量設置為啟用或禁用。 NET特定的運行時優化。值包含always
、never
和provisioned-concurrency
。如需詳細資訊,請參閱設定函數的佈建並行。 -
TZ
– 環境的時區 (:UTC
)。執行環境用NTP來同步系統時鐘。
顯示的範例值會反映最新的執行時間。特定變數或其值是否存在,可能會因先前的執行時間而有所不同。
環境變數的範例案例
您可以使用環境變數,自訂測試環境和生產環境中的函數行為。例如,您可以建立兩個具備相同程式碼,但不同組態的函數。一個函數連接到測試資料庫,另一個函數連接到生產資料庫。在此情況下,可以使用環境變數將資料庫的主機名稱和其他連線詳細資訊傳遞給函數。
以下範例顯示如何將資料庫主機和資料庫名稱定義為環境變數。
如果您希望測試環境產生比實際執行環境更多的偵錯資訊,您可以設定環境變數,以將測試環境設定為使用更詳細的記錄或更詳細的追蹤。