![[Bug]: LiteLLM Bedrock Batch Support Incomplete](https://www.chat-gpts.plus/wp-content/uploads/2026/06/15563-f92c88d7.jpg)
[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_arn、s3_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 凭证(角色)是否具备跨账户传递角色的权限
解决步骤
- 优先尝试官方推荐的配置方式:按照 LiteLLM Bedrock Batches 文档 配置模型,不要手动传入
custom_llm_provider="bedrock",让 LiteLLM 自动识别 provider。 - 如果步骤 1 仍然失败并出现 403 错误,说明当前版本存在
aws_batch_role_arn参数未被正确传递的代码缺陷(Issue 中已定位但在关闭时未合并修复)。这是已知问题,可优先尝试以下替代方案: - 不使用 LiteLLM 的 batch 接口,改为直接调用 AWS Bedrock SDK(boto3)的
create_model_invocation_jobAPI,手动传入角色 ARN 和 S3 路径。 - 等待 LiteLLM 后续版本修复此问题,或关注
batches/transformation.py和common_utils.py中角色传参逻辑的更新。
验证方法
发起一次创建 batch 的请求,如果返回 HTTP 200 并成功返回 batch ID,则问题已解决。若仍返回 403 Forbidden 或 “not supported” 错误,说明上述代码问题尚未完全规避。



