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 标准。

解决方案:

  • 确保您使用的 AWS 软件开发工具包版本支持亚马逊 Bedrock。

  • 确认您的 AWS 访问密钥 ID 和密钥配置正确。

  • 如果您要手动对请求进行签名,我们建议您仔细检查您的签名计算流程。

InternalFailure

HTTP 状态代码:500

原因:由于服务器错误,请求处理失败

解决方案:

  • 我们建议采用 AWS 推荐的方法,使用具有指数退避和随机抖动的重试,以提高可靠性。

  • 如果问题仍然存在,请联系 AWS Support Center,并提供有关您的请求和遇到的错误的详细信息。

InvalidAction

HTTP 状态代码:400

原因:所请求的操作无效

解决方案:

  • 我们建议您仔细检查请求中操作名称的拼写和格式。

  • 验证 Amazon Bedrock 是否支持相关操作调用,以及相关操作调用是否如 Amazon Bedrock API 参考中所示正确记录。

  • 确保您使用的是最新版本的 AWS SDK 或 CLI。

InvalidClientTokenId

HTTP 状态代码:403

原因:我们提供的 X.509 证书或 AWS 访问密钥 ID 不存在于我们的记录中。

解决方案:

  • 确认您使用的是正确的 AWS 访问密钥 ID。

  • 如果您最近创建了新的访问密钥,请确保您使用的是新证书,而不是旧证书。

AWS 商城协议在 15 分钟内失败

HTTP 状态代码:403

原因: AWS 市场协议因潜在问题而失败。

解决方案:

AWS 15 分钟后商城协议待定

HTTP 状态代码:403

原因: AWS 商城协议未成功,自提出请求以来已经 15 分钟了。

解决方案:

  • 每 15 分钟重试请求。如果问题仍然存在,请联系 AWS Support Center,并提供有关您的请求和遇到的错误的详细信息。

MPAgreementBeingCreated

HTTP 状态代码:403

原因:未授权您的账户访问此模型。您对该模式的 AWS 商城订阅仍在处理中

解决方案:

  • 请在 15 分钟后重试

NotAuthorized

HTTP 状态代码:400

原因:您无权执行此操作。

解决方案:

  • 查看您的 IAM 权限,并确保您拥有对亚马逊 Bedrock 资源执行所请求操作的必要权限。

  • 如果您使用的是 IAM 角色,请验证该角色是否具有适当的权限和信任关系。

  • 检查是否存在任何可能限制您的访问的组织策略或服务控制策略。

RequestExpired

HTTP 状态代码:400

原因:由于时间戳过期,请求已失效。

解决方案:

  • 确保您的系统时钟与可靠的时间源正确同步。

  • 如果您从不同的时区发出请求,请注意可能存在的时间戳差异。

ServiceUnavailable

HTTP 状态代码:503

原因:该服务暂时无法处理请求。503 错误表示该服务存在高需求或临时容量限制。这与您的账户级别配额或速率限制(返回 4 ThrottlingException 29)无关。

解决方案:

  • 我们建议采用 AWS 推荐的方法,使用具有指数退避和随机抖动的重试,以提高可靠性。

  • AWS 区域 如果问题在您当前的地区仍然存在,请考虑切换到其他地区。不同区域的负载水平和可用性可能有所不同。

  • 使用 Cross-Region 推理,通过在不同的 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来了解您可以使用的可用亚马逊 Bedrock 基础模型。

  • 我们建议您实施定期同步流程来更新您的本地资源目录。

如果您在尝试这些解决方案后仍然遇到问题,请联系 AWS Support 获取针对您的特定使用案例量身定制的进一步帮助和指导。

长时间运行或空闲连接时连接超时或重置

症状:当流量通过 NAT 网关、接口 VPC 终端节点或网络负载均衡器时,API 调用会因连接重置或超时而失败,尤其是流式传输、扩展思维或大型推理响应等长时间运行的请求。当一个空闲的池化连接在网络静默中断后被重复使用时,症状还可能表现为冷启动延迟时间过长(例如,空闲时间后的第一次呼叫需要 70 秒以上,而不是通常的几秒)。

原因:NAT 网关、接口 VPC 终端节点和网络负载均衡器的固定空闲连接超时时间为 350 秒。如果 TCP 连接的空闲时间超过此时间,则连接将在不通知客户端的情况下断开。客户端可能要等到下一个请求才会检测到已断开的连接,此时它必须等待 OS-level TCP 重试或超时后才能重新建立连接。

当这适用时:

  • 在亚马逊 EKS 或 Amazon ECS 上运行的应用程序,其中 Pod 流量通过 NAT 网关或 VPC 接口终端节点流出亚马逊 Bedrock。

  • 在 NAT 网关、Amazon Bedrock 接口 VPC 终端节点或网络负载均衡器后面的亚马逊 EC2 实例上运行的应用程序。

  • Long-running 或者突发工作负载,其中 Amazon Bedrock 客户端连接在两次通话之间的连接池中处于空闲状态。

解决方案:

在亚马逊 Bedrock 客户端上启用 TCP 保持活动状态需要两个设置协同工作。仅设置一个是不够的。

  1. 在您的 AWS 开发工具包客户端中启用 TCP 保持活动状态。boto3 Config 对象接受一个tcp_keepalive参数,默认为。FalseTrue在构建 Amazon Bedrock 客户端时将其设置为:

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

    有关其他 AWS SDK,请参阅相应的 HTTP 客户端配置文档。

  2. 将 OS-level 保持活动间隔配置为在 350 秒空闲超时之前触发。Linux 的默认值为net.ipv4.tcp_keepalive_time = 7200(2 小时),这比 NAT 或 VPC 终端节点的空闲超时时间长得多,因此单独 SDK-level 保持活动状态没有任何影响。将内核设置安全地降低到低于 350 秒(例如 45 秒)的值:

    sysctl -w net.ipv4.tcp_keepalive_time=45

    在亚马逊 EKS 和亚马逊 ECS 上,将 sysctl 应用于容器或任务securityContext、初始容器或自定义节点 AMI 中。在 Amazon EC2 上,将其设置为重启后该值保持不变。/etc/sysctl.d/

有关在 VPC 网络中长时间运行的 TCP 连接的更深入讨论,请参阅网络和内容交付博客上的 VPC 网络中实现长时间运行的 TCP 连接。 AWS

如果您在应用这两个设置后仍然遇到连接问题,请联系AWS 支持部门寻求进一步的帮助。