我們有一個在 Go 中運行的 AWS Lambda,在初始化時運行以下命令來初始化 AWS X-Rayerr := xray.Configure(xray.Config{ LogLevel: "info", ServiceVersion: "1.2.3",})在一個單獨的存儲庫中,我們有一個 utils 存儲庫,它為我們的內部內容公開了一個 HTTP 庫。這作為 git 子模塊導入到所有其他 Lambda。代碼如下:ctx, subseg := xray.BeginSubsegment(incomingContext, "Outbound HTTP call")client := xray.Client(&http.Client{Transport: tr})// further downclient.Do(req)// finallysubseg.Close(resp)這在 AWS 上部署時按預期工作,生成了一個漂亮的圖表。問題是在 utils 存儲庫上運行單元測試。僅在該存儲庫的上下文中,尚未配置 X-Ray,因此在BeginSubsegment調用時我感到恐慌:panic: failed to begin subsegment named 'Outbound HTTP call': segment cannot be found.我想優雅地處理未配置 X-Ray 的情況,記錄它并繼續執行。當 BeginSubsegment 不返回錯誤對象時,如何確保正確處理對它的調用?
1 回答

慕的地6264312
TA貢獻1817條經驗 獲得超6個贊
在 lambda 的情況下,這段代碼執行時沒有任何恐慌,因為 lambda 創建了一個外觀段,然后您的代碼將創建子段。在非 lambda 環境中,您必須先創建一個段,然后再創建一個子段。如果你不這樣做,它會產生恐慌。現在,如果您想記錄這個恐慌并繼續執行您的單元測試,那么我建議您將 AWS_XRAY_CONTEXT_MISSING 環境變量設置為 LOG_ERROR。它基本上會記錄你的恐慌并繼續執行你的單元測試。
- 1 回答
- 0 關注
- 84 瀏覽
添加回答
舉報
0/150
提交
取消