AWS PowerShell执行Copy-S3Object报错指定键不存在但文件复制成功
S3跨桶复制报错但文件成功复制的问题解决
问题现象
- 在AWS虚拟机上通过PowerShell执行S3跨桶复制时,报错
The specified key does not exist.,但文件实际已成功复制到目标位置 - 更换存储桶和待复制文件后,该错误仍然出现
- 使用
Copy-S3Object将文件下载到本地时,无任何报错
错误原因
你的命令参数使用错误:-DestinationBucket仅需填写目标存储桶的名称,不能包含前缀路径(如cfd-recordings-3/test1)。S3的存储桶与对象前缀是分离的,前缀应整合到-DestinationKey参数中。
当你把带前缀的字符串传给-DestinationBucket时,命令会尝试访问一个名为cfd-recordings-3/test1的存储桶(这个桶实际不存在),但S3的复制操作逻辑可能先完成了文件复制,再触发桶有效性检查,最终导致复制成功却报错的矛盾情况。
正确的跨桶复制命令
Copy-S3Object -BucketName cfd-recordings-3 -Key test.txt -DestinationBucket cfd-recordings-3 -DestinationKey test1/test.txt
关键说明
- 目标存储桶名称填
cfd-recordings-3,原命令中的test1前缀合并到-DestinationKey,格式为前缀/文件名 - 执行修正后的命令,既能正常完成文件复制,也不会再出现“指定的键不存在”的错误
内容的提问来源于stack exchange,提问作者Manuel Alejandro Bouza Lavoy
相关产品推荐
相关产品推荐

