如何对 Amazon Bedrock 中的 InvokeModel API 错误进行故障排除?

2 分钟阅读
0

我想解决在 Amazon Bedrock 中调用 InvokeModel API 时遇到的 AccessDeniedException 或 ValidationException 错误。

解决方法

InvokeModel API 无法访问其调用的基础模型时,将会出现 AccessDeniedExceptionValidationException 错误。如果您的 AWS 账户没有运行操作所需的 AWS Identity and Access Management (IAM) 权限,也可能会出现这些错误。

模型访问错误

如果您无权访问 API 尝试调用的模型,则会收到类似于以下示例的错误消息:

“调用 InvokeModel 操作时出错 (AccessDeniedException): 您的账户未获授权,无法调用此 API 操作。”

-或-

“调用 InvokeModel 操作时出错 (AccessDeniedException): 您无权访问具有指定模型 ID 的模型。”

要解决此问题,请验证以下配置:

IAM 权限错误

如果调用 API 的 IAM 用户或角色缺乏所需的权限,则您会收到与以下示例类似的错误消息:

“AccessDeniedException: 调用 InvokeModel 操作时出错 (AccessDeniedException): 用户 username 未获授权,无法对资源 resourcename 执行 bedrock:InvokeModel 操作,因为基于身份的策略中存在显式拒绝。”

-或-

“AccessDeniedException: 调用 InvokeModel 操作时出错 (AccessDeniedException): 用户 username 未获授权,无法对资源 resourcename 执行 bedrock:InvokeModel 操作,因为没有基于身份的策略允许 bedrock:InvokeModel 操作。”

要解决此问题,请确认调用 API 的 IAM 用户或角色具有以下所需权限:

{  "Version": "2012-10-17",
  "Statement": {
    "Sid": "AllowInference",
    "Effect": "Allow",
    "Action": [
      "bedrock:InvokeModel",
      "bedrock:InvokeModelWithResponseStream"
    ],
    "Resource": "arn:aws:bedrock:*::foundation-model/model-id"
  }
}

SCP 错误

如果服务控制策略 (SCP) 对您的账户有特定限制,则您会收到以下错误消息:

“用户 username 未获授权,无法对资源 username 执行 bedrock:InvokeModel 操作,因为服务控制策略中存在显式拒绝。”

即使您向调用 API 的 IAM 角色提供了所需的权限,也会出现上述错误。通常,当您使用跨区域干扰将调用路由到 SCP 屏蔽的区域时,将会出现此错误。

要解决此问题,请检查您的 AWS CloudTrail 事件中是否有 API 调用及其定向的区域。然后,检查 SCP 是否限制了该 API 或区域的操作。另外,请检查其他 SCP 限制,例如对特定模型 ID 的限制。

API 操作错误

如果您使用了不正确的 API 操作,则会收到以下错误消息:

“ValidationException: 调用 InvokeModel 操作时出错 (ValidationException): 请求的操作未被服务识别。”

要解决上述错误,请在 API 调用中将 bedrock-runtime 指定为服务。有关详细信息,请参阅 Boto3 网站上的 BedrockRuntime

您还可能会收到以下错误消息:

“调用 InvokeModel 操作时出错 (ValidationException): 提供的模型标识符无效”

-或-

“ResourceNotFoundException: 调用 InvokeModel 操作时出错 (ResourceNotFoundException): 无法从提供的模型标识符解析基础模型。”

上述错误是由于配置问题引起的。要解决此问题,请验证以下配置:

SDK 版本错误

如果您使用不兼容的适用于 Python 的 AWS SDK (Boto3) 版本来调用 InvokeModel API,则会收到以下错误消息:

“UnknownServiceError: 未知服务:‘bedrock-runtime’”

要解决此问题,请将 SDK 升级到最新版本。要查看 SDK 的最新版本,请参阅 GitHub 网站上的 boto3/CHANGELOG.rst

账户限制错误

如果您的账户有安全限制,则会收到以下错误:

“调用 InvokeModel 操作时出错 (ValidationException): 不允许操作”

要解决此问题,您必须创建支持案例