使用amazon/dynamodb-local Docker执行list-tables报426错误求助
本地DynamoDB部署报错426: Upgrade Required的排查方向
以下是几个大概率的问题原因及验证方法:
AWS CLI配置冲突
检查本地~/.aws/config或~/.aws/credentials配置文件,是否存在强制HTTPS或特定签名版本的配置项(比如cli_binary_format=raw-in-base64-out、signature_version=s4)。这类配置会导致请求协议与本地DynamoDB的HTTP服务不匹配。
可以临时用无签名请求测试:aws dynamodb list-tables --endpoint-url http://localhost:8000 --region local --no-sign-request如果能成功执行,说明是签名配置导致的问题。
Docker端口映射或端口占用问题
用docker ps查看容器端口映射,确认是否是0.0.0.0:8000->8000/tcp或:::8000->8000/tcp,映射错误会导致请求无法正确到达容器。
同时检查本地8000端口是否被其他程序占用:- Mac/Linux:
lsof -i :8000 - Windows:
netstat -ano | findstr :8000
若端口被占用,更换端口启动DynamoDB容器再试。
- Mac/Linux:
DynamoDB容器启动参数错误
确认启动容器的命令是否加了-ssl参数,该参数会强制容器启用HTTPS服务,此时用HTTP请求就会触发426升级要求。正确的无SSL启动命令应为:docker run -p 8000:8000 amazon/dynamodb-local如果启动时加了
-ssl,需将endpoint改为https://localhost:8000。系统代理或防火墙干扰
本地代理工具(VPN、全局代理等)可能会篡改HTTP请求协议,或防火墙拦截了本地到容器的HTTP连接。尝试关闭代理、临时禁用防火墙后重新执行命令。
内容的提问来源于stack exchange,提问作者Thomas
相关产品推荐
相关产品推荐

