[Bug]: LiteLLM Bedrock Batch Support Incomplete

用户在 LiteLLM v1.77.2 版本中,通过 API 网关调用 /v1/batches 接口创建 Bedrock 批量推理任务。用户在请求体中设置了 custom_llm_provider: "bedrock" ,也提供了 aws_batch_role_arn 、 s3_bucket_nam

[Bug]: LiteLLM Bedrock Batch Support Incomplete

[Bug]: LiteLLM Bedrock Batch Support Incomplete

快速结论:此报错发生在使用 LiteLLM 的 create_batch 接口并指定 custom_llm_provider="bedrock" 时。优先检查你是否使用了正确的文档路径参数配置,若不生效,问题很可能来自代码中 AWS 角色传参缺失导致的 403 权限错误。

问题场景

用户在 LiteLLM v1.77.2 版本中,通过 API 网关调用 /v1/batches 接口创建 Bedrock 批量推理任务。用户在请求体中设置了 custom_llm_provider: "bedrock",也提供了 aws_batch_role_arns3_bucket_name 等参数。LiteLLM 在类型定义中支持 bedrock 作为 batch provider,但实际缺少对应的处理逻辑。

报错原文

# 当使用 custom_llm_provider="bedrock" 时
{
    "error": {
        "message": "Internal Server Error, litellm.BadRequestError: LiteLLM doesn't support custom_llm_provider=bedrock for 'create_batch'",
        "type": "internal_server_error",
        "param": null,
        "code": "500"
    }
}

# 不指定 custom_llm_provider 时
{
    "error": {
        "message": "Internal Server Error, The api_key client option must be set either by passing api_key to the client or by setting the OPENAI_API_KEY environment variable",
        "type": "internal_server_error",
        "param": "None",
        "code": "500"
    }
}

# 使用文档方式仍报错
ERROR:LiteLLM:Error creating batch: Client error '403 Forbidden' for url 'https://bedrock.us-east-1.amazonaws.com/model-invocation-job'

litellm.llms.bedrock.common_utils.BedrockError: {"logMessage":"Cross-account pass role is not allowed."}

原因分析

问题由两部分原因组成:

  • 类型定义不完整(主要报错原因):LiteLLM 在 batches/main.py 的类型定义中包含了 bedrock,但对应的 elif custom_llm_provider == "bedrock": 分支代码缺失。因此当用户显式传入 custom_llm_provider="bedrock" 时,LiteLLM 无法处理 Bedrock 的 batch 操作,直接返回不支持的报错。
  • 403 / 跨账户角色错误(后续排查问题):当用户尝试通过文档推荐的配置方式发起请求时,报错变为 403 Forbidden。经分析代码发现,aws_batch_role_arn 虽然在 transformation.py 中被提取,但并未传递到 AWS 请求签名步骤中(common_utils.py 中的签名函数仍从 optional_params 读取该参数)。这导致请求签名时缺少必要角色,AWS 返回跨账户角色不允许的错误。

环境排查

  • LiteLLM 版本:v1.77.2
  • 确认是否使用了显式 custom_llm_provider: "bedrock" 参数
  • 确认 aws_batch_role_arn 是否已在模型配置的 litellm_params 中正确设置
  • 检查 S3 存储桶名称和区域是否与 Bedrock 模型区域一致
  • 确认 AWS 凭证(角色)是否具备跨账户传递角色的权限

解决步骤

  1. 优先尝试官方推荐的配置方式:按照 LiteLLM Bedrock Batches 文档 配置模型,不要手动传入 custom_llm_provider="bedrock",让 LiteLLM 自动识别 provider。
  2. 如果步骤 1 仍然失败并出现 403 错误,说明当前版本存在 aws_batch_role_arn 参数未被正确传递的代码缺陷(Issue 中已定位但在关闭时未合并修复)。这是已知问题,可优先尝试以下替代方案:
  3. 不使用 LiteLLM 的 batch 接口,改为直接调用 AWS Bedrock SDK(boto3)的 create_model_invocation_job API,手动传入角色 ARN 和 S3 路径。
  4. 等待 LiteLLM 后续版本修复此问题,或关注 batches/transformation.pycommon_utils.py 中角色传参逻辑的更新。

验证方法

发起一次创建 batch 的请求,如果返回 HTTP 200 并成功返回 batch ID,则问题已解决。若仍返回 403 Forbidden 或 “not supported” 错误,说明上述代码问题尚未完全规避。

参考来源

BerriAI/litellm #15563

GamsGo AI

AI 工具推荐

想把多个 AI 模型放在一个入口?

GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。

了解 GamsGo AI

推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。

celebrityanime
celebrityanime
文章: 9201

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注