boto3调用S3的copy_object方法报仅接受关键字参数错误如何解决
报错原因
boto3的S3客户端copy_object()方法强制要求所有参数必须以关键字参数形式传入,不支持按参数位置顺序传递位置参数。你当前代码里按位置依次传入Bucket、Key、CopySource三个参数,不符合方法调用规范,因此触发报错。
修复代码
将调用copy_object()的行修改为显式指定参数名的写法即可:
CopySource = { 'Bucket': file.bucket_name, 'Key': file.key } Bucket = project_bucket Key = file.key # 显式指定每个参数的参数名,使用关键字参数传参 s3_client.copy_object( Bucket=Bucket, Key=Key, CopySource=CopySource )
批量复制目录保持结构的补充说明
如果你需要批量复制源桶指定目录下的所有对象,只需要遍历源桶对应前缀(Prefix)下的所有对象,直接将每个对象的原Key作为目标桶的Key传入即可自动保持和源端完全一致的目录结构。
内容的提问来源于stack exchange,提问作者milind potdar
相关产品推荐
相关产品推荐

