本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
對自訂身分提供者問題進行故障診斷
本節說明與 Transfer Family 的自訂身分提供者相關問題的可能解決方案。
故障診斷 API Gateway 整合錯誤
Description
使用者無法使用 Transfer Family 伺服器進行身分驗證,在測試您的身分提供者時,您會看到錯誤,例如:
{ "Response": "", "StatusCode": 500, "Message": "Internal server error" }
原因
API Gateway 整合錯誤可能的原因如下:
-
API Gateway 組態不正確
-
未正確處理 Lambda 函數錯誤
-
API Gateway 和 Lambda 之間的許可問題
-
Lambda 函數的格式不正確回應
解決方案
若要疑難排解 API Gateway 整合錯誤:
-
如需詳細的錯誤資訊,請檢查您的 Lambda 函數日誌:
-
在 CloudWatch 主控台中,導覽至日誌群組 > /aws/lambda/your-function-name
-
尋找指出根本原因的錯誤訊息或堆疊追蹤
-
-
確認您的 Lambda 函數傳回格式正確的回應:
{ "Role": "arn:aws:iam::123456789012:role/TransferUserRole", "HomeDirectory": "/mybucket/home/username" }
-
啟用 API Gateway 的詳細 CloudWatch 記錄:
-
在 API Gateway 主控台中,選取您的 API,然後選擇階段
-
選取您的階段並在日誌/追蹤下,啟用 CloudWatch Logs
-
將日誌層級設定為 ERROR 或 INFO
-
-
直接測試您的 API Gateway 端點:
curl -X POST https://your-api-id.execute-api.region.amazonaws.com/prod/servers/your-server-id/users/username/config \ -H "Content-Type: application/json" \ -d '{"Password": "password"}'
-
驗證 API Gateway 和 Lambda 之間的許可:
-
確保 API Gateway 具有叫用 Lambda 函數的許可
-
檢查 Lambda 函數的執行角色是否具有必要的許可
-
故障診斷 Lambda 函數逾時
Description
當使用者嘗試使用自訂身分提供者與您的 Transfer Family 伺服器進行身分驗證時,他們會經歷長時間延遲,然後發生身分驗證失敗。在 Lambda 日誌中,您會看到逾時錯誤。
原因
用於自訂身分提供者的 Lambda 函數預設逾時為 3 秒。如果您的身分驗證邏輯花費超過此逾時的時間 (例如,在查詢外部資料庫或對第三方身分提供者進行 API 呼叫時),函數將會逾時,且身分驗證將會失敗。
解決方案
若要解決 Lambda 逾時問題:
-
增加 Lambda 函數逾時:
-
在 Lambda 主控台中,導覽至您的函數,然後選取組態索引標籤
-
在一般組態下,按一下編輯
-
增加逾時值 (驗證函數建議最多 15 秒)
-
-
最佳化您的 Lambda 函數程式碼:
-
使用資料庫查詢的連線集區
-
實作經常存取資料的快取
-
最小化身分驗證期間的外部 API 呼叫
-
-
考慮使用 Lambda 佈建並行來消除冷啟動:
aws lambda put-provisioned-concurrency-config \ --function-name my-authentication-function \ --qualifier prod \ --provisioned-concurrent-executions 5
-
使用 CloudWatch 指標監控 Lambda 效能,並設定持續時間閾值的警示
對一致的 Lambda 逾時問題進行故障診斷
Description
使用 Lambda 函數進行身分驗證時,使用者會遇到一致的逾時。
原因
Lambda 無法連線到用於驗證的對應 AWS 服務 (例如 DynamoDB、Secrets Manager 或其他身分提供者)。
解決方案
確認子網路可以連接 AWS 服務。或者,如果連線到網際網路身分提供者 (例如 Okta),請確認 Lambda 函數的子網路可以透過 NAT Gateway 連線到網際網路
對KeyError
例外狀況進行故障診斷
Description
在 Transfer Family 日誌項目中,您會注意到「KeyError」例外狀況。
原因
最可能的原因是使用者或identity_provider
記錄格式不正確或缺少必要欄位。
解決方案
檢閱位於ERRORS
日誌群組中的/aws/transfer/
日誌以取得線索。your-server-id