Bedrock Runtime: InvokeModel, https response error StatusCode: 400, RequestID: 3...
错误信息
"InvokeModel: operation error Bedrock Runtime: InvokeModel,
https response error StatusCode: 400, RequestID: 35fd4dc3-6d33-4e6b-8b6c-2a2fae2fa7e3, ValidationException:
***.***.***.***.***.signature: Field required
AI 解决方案
报错分析报告
错误翻译
原文:ValidationException: ***.***.***.***.***.signature: Field required
译文:验证异常:***.***.***.***.***.signature:字段必需
原因分析
这是调用 AWS Bedrock 模型时的 API 请求验证错误。错误表明在请求负载中缺少必需的
signature 字段,该字段是 Bedrock API 请求签名验证的一部分。具体原因:
X-Amz-Signature 或相关的认证头信息解决方案
Python 解决方案(使用 boto3):
import boto3
import json
# 确保正确配置 AWS 凭证和区域
bedrock_runtime = boto3.client(
service_name='bedrock-runtime',
region_name='us-east-1', # 改为您的区域
# 确保使用正确的凭证源
# AWS CLI 配置的凭证文件或 IAM 角色
)
try:
# 构建完整的请求体,确保包含所有必需字段
request_body = {
"prompt": "您的提示词",
"max_tokens": 100,
"temperature": 0.7
# 根据模型要求添加其他必需参数
}
response = bedrock_runtime.invoke_model(
modelId='anthropic.claude-v2', # 改为您使用的模型ID
body=json.dumps(request_body)
)
result = json.loads(response['body'].read())
print(result)
except Exception as e:
print(f"错误详情: {e}")
关键修复点:
# 验证 AWS CLI 配置
aws configure list
- 确保 IAM 角色权限:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "bedrock:InvokeModel",
"Resource": "*"
}
]
}
️ 预防措施
1. 使用 AWS SDK 的最佳实践
AWS_REGION 和 AWS_PROFILE2. 请求验证工具
aws bedrock-runtime invoke-model \
--model-id anthropic.claude-v2 \
--body '{"prompt": "test"}' \
output.json
3. 推荐工具
⚠️ 重要提示:确保您的 IAM 用户/角色具有
bedrock:InvokeModel 权限,并且 AWS SDK 正确加载了有效的凭证。对于服务间调用,建议使用 IAM 角色而非访问密钥。