Docker部署含Bedrock-Runtime的AWS应用出现UnknownServiceError求助
解决Docker部署中
UnknownServiceError: Unknown service: 'bedrock-runtime'问题 核心原因
bedrock-runtime是AWS较新的服务,boto3必须搭配对应版本的botocore才能识别该服务。你的本地环境botocore版本足够新,但Docker容器内的依赖版本不匹配,导致无法识别服务。
解决步骤
1. 锁定兼容的依赖版本
bedrock-runtime要求最低版本:
- boto3 >= 1.28.0
- botocore >= 1.31.0
直接在requirements.txt里指定匹配的版本组合(建议boto3和botocore版本保持一致):
boto3==1.34.0 botocore==1.34.0
2. 修正Dockerfile的依赖安装逻辑
- 避免使用过于老旧的基础镜像,换成较新的稳定版,比如
python:3.11-slim - 安装依赖前清理pip缓存,确保拉取指定版本:
FROM python:3.11-slim WORKDIR /app COPY requirements.txt . RUN pip install --no-cache-dir -r requirements.txt COPY . . CMD ["python", "your_script.py"]
3. 验证容器内的依赖版本
进入运行中的容器,检查实际安装的版本是否符合要求:
docker exec -it <你的容器ID> bash pip show boto3 botocore
确认两个版本都达标,且版本号一致。
4. 手动指定服务端点(备选方案)
若版本没问题仍报错,初始化bedrock-runtime客户端时手动指定端点:
import boto3 client = boto3.client( 'bedrock-runtime', region_name='us-east-1', # 替换为你使用的区域 endpoint_url='https://bedrock-runtime.us-east-1.amazonaws.com' )
5. 检查容器的AWS区域配置
容器内AWS区域未正确设置也可能导致服务识别失败,可通过环境变量指定:
在Dockerfile中添加:
ENV AWS_DEFAULT_REGION=us-east-1
或运行容器时传递参数:
docker run -e AWS_DEFAULT_REGION=us-east-1 你的镜像名
关键提醒
- 不要单独升级boto3,botocore是处理服务定义的核心组件,必须同步升级
- 避免使用基础镜像自带的旧版boto3,确保通过pip安装指定的版本
内容的提问来源于stack exchange,提问作者Vamsee Krishna
相关产品推荐
相关产品推荐

