配置環境變量
更新時間 2025-01-13 16:37:11
最近更新時間: 2025-01-13 16:37:11
分享文章
本章介紹函數工作流如何配置環境變量。
概述
環境變量可以在不修改代碼的情況下,將動態參數傳遞到函數,調整函數的執行行為。
應用場景
- 區分多環境:相同的函數邏輯,可根據部署環境的不同,配置不同的環境變量以區分。例如,通過環境變量給測試和開發環境配置不同的數據庫。
- 配置加密:函數中訪問其他服務的認證信息,例如賬號和密碼,ak/sk,可通過配置加密環境變量,在代碼中動態獲取,保證敏感數據的安全。
- 動態配置:函數邏輯中需要動態調整的配置,例如查詢周期、超時時間,可提取為環境變量避免業務每次變化都需要修改代碼。
操作步驟
設置FunctionGraph函數的加密配置和環境變量,無需對代碼進行任何更改,可以將設置動態參數傳遞到函數代碼和庫。
添加環境變量

例如Node.js語言加密配置和環境變量的值(value)可以通過Context類中的getUserData(string key)獲取。
注意
設置加密配置、環境變量時,用戶自定義的鍵(key)/值(value),鍵(key)輸入規范:可包含字母、數字、下劃線_,以大/小寫字母開頭。
設置“鍵”和“值”的總長度不超過4096個字符。
設置環境變量時,FunctionGraph會明文展示所有輸入信息,請不要輸入敏感信息(如帳戶密碼等),以防止信息泄露。
打開加密開關之后,界面上會對鍵值進行加密,參數傳輸過程中鍵值也處于加密狀態。
預設值
環境變量存在如下預設值,您無法配置和預設值同名的環境變量。
預設值及說明
| 環境變量名 | 含義 | 獲取方式和默認值 |
|---|---|---|
| RUNTIME_PROJECT_ID | 函數的項目ID | Context類提供接口或通過系統環境變量獲取 |
| RUNTIME_FUNC_NAME | 函數名稱 | Context類提供接口或通過系統環境變量獲取 |
| RUNTIME_FUNC_VERSION | 函數版本 | Context類提供接口或通過系統環境變量獲取 |
| RUNTIME_HANDLER | 函數執行入口 | 通過系統環境變量獲取 |
| RUNTIME_TIMEOUT | 函數執行的超時時間 | 通過系統環境變量獲取 |
| RUNTIME_USERDATA | 用戶通過環境變量傳入的值 | Context類提供接口或通過系統環境變量獲取 |
| RUNTIME_CPU | 函數占用的CPU資源,取值與MemorySize成比例 | Context類提供接口或通過系統環境變量獲取 |
| RUNTIME_MEMORY | 函數配置的內存大小 | Context類提供接口或通過系統環境變量獲取單位MB |
| RUNTIME_MAX_RESP_BODY_SIZE | 最大返回值限制 | 通過系統環境變量獲取系統默認為6291456 Byte |
| RUNTIME_INITIALIZER_HANDLER | 函數初始化入口 | 通過系統環境變量獲取 |
| RUNTIME_INITIALIZER_TIMEOUT | 函數初始化超時時間 | 通過系統環境變量獲取 |
| RUNTIME_ROOT | Runtime包的路徑 | 通過系統環境變量獲取系統默認路徑為/home/snuser/runtime |
| RUNTIME_CODE_ROOT | 代碼在容器中的存放目錄 | 通過系統環境變量獲取系統默認路徑為/opt/function/code |
| RUNTIME_LOG_DIR | 系統日志在容器中存放的目錄 | 通過系統環境變量獲取系統默認路徑為/home/snuser/log |
示例
使用環境變量設置以下信息:安裝文件的目錄、存儲輸出的位置、存儲連接和日志記錄設置等。這些設置與應用程序邏輯解耦,在需要變更設置時,無需更新函數代碼。
在如下函數代碼片段中,參數“obs_output_bucket”為圖片處理后存儲地址。
def handler(event, context):
srcBucket, srcObjName = getObsObjInfo4OBSTrigger(event)
obs_address = context.getUserData('obs_address')
outputBucket = context.getUserData('obs_output_bucket')
if obs_address is None:
obs_address = '{obs_address_ip}'
if outputBucket is None:
outputBucket = 'casebucket-out'
ak = context.getAccessKey()
sk = context.getSecretKey()
# download file uploaded by user from obs
GetObject(obs_address, srcBucket, srcObjName, ak, sk)
outFile = watermark_image(srcObjName)
# 將轉換后的文件上傳到新的obs桶中
PostObject (obs_address, outputBucket, outFile, ak, sk)
return 'OK'
通過設置環境變量obs_output_bucket,可以靈活設置存儲輸出圖片的OBS桶。
環境變量
