Windows本地DynamoDB执行describe-table报[Errno 22]无效参数
Windows本地DynamoDB执行
describe-table时报[Errno 22] Invalid argument的解决方案 你遇到的这个问题是Windows系统下AWS CLI与本地DynamoDB之间的时间戳解析兼容性问题,我来帮你梳理下解决思路和具体方案:
问题根源
从你用--debug排查的结果来看,服务其实已经返回了表的完整信息,但在解析时间戳字段(比如表的CreationDateTime)时触发了错误。这是因为本地DynamoDB返回的时间戳是ISO 8601标准格式,而Windows系统的区域设置如果和这个格式不匹配,基于Python实现的AWS CLI v1在解析时就会抛出OSError: [Errno 22] Invalid argument。而查询不存在的表时,不会返回带时间戳的元数据字段,所以不会触发这个错误。
具体解决方法
方法1:升级到AWS CLI v2
AWS CLI v2针对Windows平台做了大量兼容性优化,已经修复了这类时间戳解析问题。操作步骤如下:
- 卸载旧版本:打开命令提示符执行
pip uninstall awscli - 下载官方安装包安装AWS CLI v2(注意v2不支持通过pip安装),安装完成后重启终端,执行
aws --version确认版本为aws-cli/2.x.x,之后再尝试describe-table命令。
方法2:调整Windows区域设置
如果暂时不想升级CLI,可以修改系统区域设置,让时间/日期格式与ISO标准兼容:
- 打开「控制面板」→「区域」→「格式」标签页
- 将短日期格式改为
yyyy-MM-dd,长日期格式调整为年份在前的格式(比如yyyy'年'M'月'd'日') - 将时间格式改为
HH:mm:ss(24小时制),避免AM/PM格式干扰解析 - 点击「应用」后,重启终端再执行目标命令
方法3:临时用WSL执行命令
如果上述方法都不想尝试,也可以通过Windows子系统Linux(WSL)启动本地DynamoDB,然后在WSL终端中执行AWS CLI命令——Linux环境下的时间戳解析逻辑不会有这个Windows特有的问题。
验证操作
修改完成后,重新执行命令验证:
aws dynamodb describe-table --table-name MusicCollection2 --endpoint-url http://localhost:8000
如果返回正常的表元数据,说明问题已经解决。
内容的提问来源于stack exchange,提问作者Dmitriy Popov
相关产品推荐
相关产品推荐

