【发布时间】:2021-07-07 23:11:44
【问题描述】:
我正在跨账户 s3 存储桶之间复制多个 parquet 文件。当我将它们复制到目标存储桶时,我想重命名文件。
import boto3
s3_client = boto3.client('s3')
s3_resource = boto3.resource('s3')
bucket = 'sourcebucket'
folder_path = 'source_folder/'
resp = s3_client.list_objects(Bucket=bucket, Prefix=folder_path)
keys = []
for obj in resp['Contents']:
keys.append(obj['Key'])
for key in keys:
copy_source ={
'Bucket': 'sourcebucket',
'Key': key
}
file_name = key.split('/')[-1]
s3_file = 'dest_folder/'+'xyz'+file_name
bucketdest = s3_resource.Bucket('destinationbucket')
bucketdest.copy(copy_source,s3_file,ExtraArgs={'GrantFullControl':'id = " "'})
这是我尝试过的。我可以在目标存储桶中看到具有新名称的文件,但它们没有实际数据。
谢谢!
【问题讨论】:
-
你确定源文件不为空吗?您是否有权访问目标存储桶中的文件?
-
S3 是否将对象显示为零长度?
标签: python amazon-web-services amazon-s3 boto3 parquet