使用rclone从阿里云OSS复制文件到AWS S3时遇请求头缺失错误
解决rclone从阿里云OSS复制到AWS S3时的Object Lock校验和错误
问题原因
目标AWS S3桶开启了Object Lock(对象锁定),根据S3的规则,这类桶的Put Object请求必须携带Content-MD5或x-amz-checksum-* HTTP头来验证数据完整性,而rclone默认未自动生成并发送该头,导致触发400 InvalidRequest错误。
解决方案
方法1:复制命令中显式指定校验和算法
在rclone copy命令中添加--s3-checksum-algorithm参数,指定S3支持的校验和算法(如SHA256),让rclone自动生成并发送对应的校验和头:
rclone copy -P --s3-checksum-algorithm SHA256 ali-cloud:bucket001 aws-cloud:bucket001
该参数会让rclone在上传文件时计算SHA256校验和,并通过x-amz-checksum-sha256头发送给S3,满足Object Lock的要求。
方法2:全局配置AWS S3 Remote的校验和算法
如果需要长期使用该配置,可直接编辑AWS S3的rclone远程配置,默认启用校验和算法:
- 执行配置编辑命令:
rclone config edit aws-cloud
- 在配置内容中添加一行:
checksum_algorithm = SHA256
- 保存并退出配置编辑器,之后所有针对该远程的操作都会自动携带校验和头。
额外说明
- 除SHA256外,也可选择S3支持的其他校验和算法(如SHA1、CRC32C),但SHA256是当前推荐的标准算法。
- 若目标桶的Object Lock是误开启的,也可考虑在AWS控制台关闭Object Lock功能(需注意桶的版本状态,关闭前需确认业务需求)。
内容的提问来源于stack exchange,提问作者Jay J
相关产品推荐
相关产品推荐

