View a markdown version of this page

對 Amazon Bedrock API 錯誤碼進行疑難排解 - Amazon Bedrock

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

對 Amazon Bedrock API 錯誤碼進行疑難排解

本節提供有關使用 Amazon Bedrock API 時可能遇到的常見錯誤、錯誤原因及錯誤解決方案的詳細資訊。

AccessDeniedException

HTTP 狀態碼:403

原因:您沒有足夠的許可來執行請求的動作。

解決方案

  • 確認您的 IAM 使用者或角色具有您正嘗試動作的必要許可。

  • 如果您使用的是臨時安全憑證,請確保其尚未過期。

FTUFormNotFilled

HTTP 狀態碼:404

原因:尚未為此帳戶提交模型使用案例詳細資訊

解決方案

  • 使用模型之前,請先填寫 Anthropic 使用案例詳細資訊表單

IncompleteSignature

HTTP 狀態碼:400

原因:請求簽章不符合 AWS 標準。

解決方案

  • 請確定您使用的是支援 Amazon Bedrock 的 AWS SDK 版本。

  • 確認您的 AWS 存取金鑰 ID 和私密金鑰已正確設定。

  • 如果您手動簽署請求,建議您重新檢查簽章計算程序。

InternalFailure

HTTP 狀態碼:500

原因:請求處理因伺服器錯誤而失敗

解決方案

InvalidAction

HTTP 狀態碼:400

原因:請求的動作或操作無效。

解決方案

  • 建議您再次檢查請求中動作名稱的拼字和格式。

  • 確認動作呼叫受 Amazon Bedrock 支援,並已依照 Amazon Bedrock API 參考所示正確記錄下來。

  • 請確定您使用的是 SDK up-to-date。 AWS

InvalidClientTokenId

HTTP 狀態碼:403

原因:提供的 X.509 憑證或 AWS 存取金鑰 ID 不存在於我們的記錄中。

解決方案

  • 確認您使用的是正確的 AWS 存取金鑰 ID。

  • 如果您最近建立了新的存取金鑰,請確定您使用的是新憑證,而不是舊憑證。

AWS Marketplace 協議在 15 分鐘內失敗

HTTP 狀態碼:403

原因: AWS Marketplace 協議因基礎問題而失敗。

解決方案

AWS 15 分鐘後待定的 Marketplace 協議

HTTP 狀態碼:403

原因: AWS Market Marketplace 協議未成功,且自提出請求以來已經過 15 分鐘。

解決方案

  • 每 15 分鐘再次嘗試請求。如果問題仍然存在,請聯絡 AWS 支援中心,並提供有關您的請求及所遇到錯誤的詳細資訊。

MPAgreementBeingCreated

HTTP 狀態碼:403

原因:您的帳戶未獲授權存取此模型。此模型的 AWS Marketplace 訂閱仍在處理中

解決方案

  • 15 分鐘後再試一次

NotAuthorized

HTTP 狀態碼:400

原因:您沒有執行此動作的許可。

解決方案

  • 檢閱您的 IAM 許可,並確保您擁有對 Amazon Bedrock 資源執行所請求動作的必要權限。

  • 如果您使用的是 IAM 角色,請確認該角色具有適當的許可和信任關係。

  • 檢查是否有任何組織政策或服務控制政策可能限制您的存取。

RequestExpired

HTTP 狀態碼:400

原因:由於時間戳記過期,請求不再有效。

解決方案

  • 確保您的系統時鐘與可靠的時間來源正確同步。

  • 如果您從不同的時區提出請求,請注意時間戳記可能會有差異。

ServiceUnavailable

HTTP 狀態碼:503

原因:服務暫時無法處理請求。503 錯誤表示服務遇到高需求或暫時容量限制。這與您的帳戶層級配額或速率限制 (傳回 429 ThrottlingException) 無關。

解決方案

  • 我們建議採用 AWS 建議的重試方法,搭配指數退避和隨機抖動來改善可靠性。

  • AWS 區域 如果問題仍存在目前區域中,請考慮切換到不同的 。不同的區域可能會有不同的負載和可用性層級。

  • 使用跨區域推論,透過跨不同運算無縫管理意外流量暴增 AWS 區域。

  • 如果您有高輸送量需求,建議您針對使用案例探索佈建輸送量

最佳實務

  • 確保您的應用程式可以在錯誤處理和重試邏輯中會適當處理 503 狀態碼。

  • 檢查 AWS 服務運作狀態儀表板,了解可能影響服務的任何問題或排定的維護。

如果您經常遇到 503 錯誤,或這些錯誤對您的操作造成重大影響,請聯絡 AWS Support 以取得針對您特定使用案例量身打造的進一步協助和指引。

ThrottlingException

HTTP 狀態碼:429

原因:由於超過 Amazon Bedrock 的帳戶配額,請求遭拒。

解決方案

  • 檢查 Amazon Bedrock 服務配額主控台中的 Amazon Bedrock 服務配額,以了解分配給您帳戶的限制。

  • 我們建議採用 AWS 建議的方法來使用具有指數退避的重試。 和隨機抖動可提高可靠性。

  • 如果您有高輸送量需求,建議您針對使用案例探索佈建輸送量

  • 如果您的工作負載流量超過您的帳戶配額,請聯絡您的客戶經理或 AWS Support,以請求提高配額。

ValidationError

HTTP 狀態碼:400

原因:輸入不符合 Amazon Bedrock 指定的限制條件。

解決方案

  • 檢閱 API 文件,以確保所有必要參數皆已正確納入並格式化。

  • 檢查您的輸入值是否在允許的範圍內或符合預期的模式。

  • 對於您正在使用的動作,建議您注意 API 參考中提及的任何特定驗證規則。

ResourceNotFound

HTTP 狀態碼:404

原因:找不到請求的資源。

解決方案

  • 驗證請求中模型 ID、端點名稱或其他資源識別碼的正確性。

  • 請實作後援機制,以便在找不到主要資源時使用替代模型或端點。

最佳實務

  • 使用 ListFoundationModels 了解您可以使用的可用 Amazon Bedrock 基礎模型。

  • 建議您實作定期同步程序,以更新本機資源目錄。

如果您在嘗試過這些解決方案後仍遇到問題,請聯絡 AWS Support 以取得針對您特定使用案例量身打造的進一步協助和指引。

長時間執行或閒置連線上的連線逾時或重設

徵狀:當流量通過 NAT 閘道、介面 VPC 端點或 Network Load Balancer 時,API 呼叫會因連線重設或逾時而失敗,特別是對於串流、延伸思考或大型推論回應等長時間執行的請求。當閒置集區連線在網路無提示地捨棄時重複使用時,症狀也可能顯示為較長的冷啟動延遲 (例如,閒置期間後的第一個呼叫需要 70 秒以上,而不是一般少數)。

原因:NAT 閘道、介面 VPC 端點和 Network Load Balancer 的固定閒置連線逾時為 350 秒。如果 TCP 連線保持閒置超過此期間,則會捨棄連線,而不會通知用戶端。在下一次請求之前,用戶端可能不會偵測到中斷的連線,此時用戶端必須等待作業系統層級 TCP 重試或逾時,才能重新建立連線。

適用時:

  • 在 Amazon EKS 或 Amazon ECS 上執行的應用程式,其中傳送至 Amazon Bedrock 的 Pod 流量會透過 NAT Gateway 或 VPC 介面端點輸出。

  • 在 NAT Gateway 後方的 Amazon EC2 執行個體上執行的應用程式、Amazon Bedrock 的介面 VPC 端點或 Network Load Balancer。

  • 長時間執行或爆量工作負載,其中 Amazon Bedrock 用戶端連線在通話之間的連線集區中閒置。

解決方案

在 Amazon Bedrock 用戶端上啟用 TCP 保持連線需要兩個同時運作的設定。只設定一個是不夠的。

  1. 在 AWS 開發套件用戶端中啟用 TCP 保持連線。boto3 Config 物件接受 tcp_keepalive 參數,預設為 False。在建構 Amazon Bedrock 用戶端True時將其設定為 :

    import boto3 from botocore.config import Config config = Config(tcp_keepalive=True) client = boto3.client("bedrock-runtime", config=config)

    如需其他 AWS SDKs,請參閱對應的 HTTP 用戶端組態文件。

  2. 將作業系統層級保持連線間隔設定為在 350 秒閒置逾時之前觸發。Linux 預設為 net.ipv4.tcp_keepalive_time = 7200(2 小時),這比 NAT 或 VPC 端點閒置逾時長得多,因此 SDK 層級單獨保持連線沒有效果。將核心設定安全地降到低於 350 秒的值 (例如 45 秒):

    sysctl -w net.ipv4.tcp_keepalive_time=45

    在 Amazon EKS 和 Amazon ECS 上,在 Pod 或任務 securityContext、初始化容器或自訂節點 AMI 中套用 sysctl。在 Amazon EC2 上,將其設定為 ,/etc/sysctl.d/讓值在重新開機期間持續存在。

如需 VPC 網路中長時間執行 TCP 連線的深入討論,請參閱 AWS 網路與內容交付部落格上的在 VPC 網路內實作長時間執行 TCP 連線

如果您在套用這兩個設定後持續遇到連線問題,請聯絡 AWS Support 以取得進一步協助。