本文介紹自訂運行時(Custom Runtime)的公用要求標頭、響應碼和回應標頭以及日誌格式,您可以參見這些資訊打造屬於您的自訂運行環境。
Function Compute公用要求標頭
自訂運行時從Function Compute中接收到的公用要求標頭如下表所示。如果您需要訪問阿里雲其他服務,您可能需要用到臨時AccessKey的Headers。如果您需要遷移已有的應用,可忽略下文的內容。
事件函數和HTTP函數均包含Common Headers。
公用要求標頭是Function Compute自動產生的,主要包含許可權資訊和函數的基本資料等。
Header | 描述 |
x-fc-request-id | Request ID。 |
x-fc-access-key-id | 臨時AccessKey ID。 |
x-fc-access-key-secret | 臨時AccessKey Secret。 |
x-fc-security-token | 臨時Security Token。 |
x-fc-function-handler | 函數的Handler,如果Runtime本身就是函數(例如Custom Runtime或者Custom Container函數),則該值無意義,設定為一個隨機字串即可。 |
x-fc-function-memory | 函數最大能使用的記憶體。 |
x-fc-function-initializer | Initializer函數的Handler,如果Runtime本身就是函數(例如Custom Runtime或者Custom Container函數),則該值無意義,設定為一個隨機字串即可。 |
x-fc-initialization-timeout | Initializer函數執行的逾時時間。 |
x-fc-instance-lifecycle-pre-stop-handler | PreStop函數的Handler,如果Runtime本身就是函數(例如Custom Runtime或者Custom Container函數),則該值無意義,設定為一個隨機字串即可。 |
x-fc-instance-lifecycle-pre-freeze-handler | PreFreeze函數的Handler,如果Runtime本身就是函數(例如Custom Runtime或者Custom Container函數),則該值無意義,設定為一個隨機字串即可。 |
x-fc-region | 函數所在的地區。 |
x-fc-account-id | 函數所有者的UID。 |
x-fc-qualifier | 函數調用時指定的服務版本或別名。更多資訊,請參見使用版本和別名實現灰階發布。 |
x-fc-version-id | 函數調用時指定的服務版本。 |
x-fc-function-name | 函數名稱。 |
x-fc-service-name | 函數所在的服務的名字。 |
x-fc-service-logproject | 函數所在服務配置的記錄項目。 |
x-fc-service-logstore | 函數所在服務配置的日誌庫。 |
x-fc-control-path | 函數的請求類型。 對於Custom Runtime或Custom Container,您可以根據Headers中的參數來判斷函數調用是HTTP函數調用還是事件函數調用。參數資訊如下:
|
Function Compute響應碼和回應標頭
Custom Runtime本質是您實現的HTTP Server,因此每一次函數調用都是一次HTTP請求,即每次響應都有響應碼和回應標頭。
響應碼
StatusCode200:成功狀態。404:失敗狀態。
回應標頭
x-fc-status200:成功狀態。404:失敗狀態。
通過Headers中的x-fc-status響應,向Function Compute彙報本地函數是否執行成功。
不設定
x-fc-status:Function Compute預設本次調用是成功執行的,但是您的函數可能有異常,沒有向Function Compute彙報,Function Compute會認為這次函數執行沒有報錯,在商務邏輯上可能沒有影響,但是在監控可觀測性上會有影響。如下圖所示:
設定
x-fc-status:當您的函數存在異常,通過x-fc-status響應向Function Compute彙報本次函數執行失敗,並將錯誤堆棧資訊列印到日誌中。如下圖所示:
在返回的HTTP響應中,建議您同時設定StatusCode和x-fc-status。
函數日誌格式
建議您在建立服務時啟用日誌功能,Custom Runtime中所有列印到標準輸出(Stdout)的日誌會自動收集到您指定的Log Service中。具體步驟,請參見配置日誌。
Function Compute在其他運行環境,即除Custom Runtime和Custom Container以外的運行環境中調用函數時,如果要求標頭中包含x-fc-log-type" = "Tail",那麼返回的回應標頭包含x-fc-log-result的內容就是函數執行時列印的日誌,日誌上限為4 KB。您可以在Function Compute控制台函數執行結果中查看該日誌。如果您希望在控制台的執行結果中看到Custom Runtime的作業記錄,需要在代碼中記錄請求開始和結束的日誌。
通過HTTP觸發器匿名調用函數時,如果要求標頭包含x-fc-log-type" = "Tail",可能導致敏感資訊泄露,建議您開啟鑒權,詳見認證鑒權。
日誌內容 | 是否必選 | 代碼 |
啟動Runtime | 否 說明 該內容為函數冷啟動的標誌。 |
說明
|
Invoke開始的日誌 | 是 |
|
Invoke結束的日誌 | 是 |
|
Initialize開始的日誌 | 否 說明 如果是Initializer函數,則需要記錄。 |
|
Initialize結束的日誌 | 否 說明 如果是Initializer函數,則需要記錄。 |
|
除了以上特殊的資訊外,推薦您在自己的日誌中包含請求ID,方便日後診斷問題。推薦日誌格式為$utcdatetime(yyyy-MM-ddTHH:mm:ss.fff) $requestId [$Level] $message。
不同語言下指定記錄層級的介面不同,請您根據實際運行環境設定。更多資訊,請參見基礎資訊。
相關文檔
如果您還需要瞭解自訂運行時的運行環境資訊、各語言啟動命令和啟動參數的配置以及執行個體生命週期回呼函數的配置,請參見以下文檔: