使用AWS CLI批量上传文件至S3时出现Errno 22错误求助
解决AWS CLI S3 Sync上传时Errno 22错误的方向
排查隐藏的文件名/路径问题
虽然你说文件名无特殊字符,但Windows下可能存在肉眼不可见的字符(比如全角空格、零宽空格、控制字符),或者路径长度超过Windows默认260字符限制。可以试试:- 用
dir /x命令查看文件的短文件名,确认是否有异常; - 启用Windows长路径支持:通过组策略(计算机配置>管理模板>系统>文件系统>启用Win32长路径)或修改注册表(
HKLM\SYSTEM\CurrentControlSet\Control\FileSystem下设置LongPathsEnabled为1)。
- 用
更新AWS CLI到最新版本
之前正常近期出问题,大概率是某个版本的AWS CLI引入了Windows字符处理的bug,或者旧版本存在已知缺陷。卸载现有版本,重新安装最新的AWS CLI v2,安装后用aws --version确认版本。拆分同步任务
一次性同步大量文件可能触发内存或参数传递的异常。把大目录拆成多个子目录,分批次执行s3 sync,减少单次同步的文件数量。检查系统资源占用
同步数百个文件后,系统内存、磁盘IO可能出现瓶颈,导致AWS CLI无法正常读取文件。同步时打开任务管理器,监控内存、CPU和磁盘使用率,确认是否有资源耗尽的情况。改用PowerShell原生AWS工具
放弃用Start-Process调用AWS CLI,换成AWS Tools for PowerShell模块,用Write-S3Object上传,对Windows兼容性更好:# 未安装模块先执行 Install-Module -Name AWSPowerShell.NetCore -Force # 同步目录到S3 Write-S3Object -BucketName "<s3Bucket>" -Folder "<backupfolder>" -Region us-west-2 -Recurse检查S3存储桶与凭证配置
确认存储桶区域确实是us-west-2,存储桶没有特殊权限或生命周期规则限制上传;同时检查AWS凭证权限是否足够,是否在同步过程中出现凭证过期(如果用的是临时凭证)。
内容的提问来源于stack exchange,提问作者Scott
相关产品推荐
相关产品推荐

