我必须将文件从一个S3存储桶复制到另一个。在S3存储桶的名称中有一些特殊字符限制它显示为单个文件名。当从存储桶中获取列表时,我们能够获得文件名,但在复制时,我们得到文件未找到错误。(在复制时,它将读取文件名,但由于特殊字符无法读取。)
- 我正在使用的代码:*
def copy_object():
s3 = boto3.client('s3', region_name='us-east-1')
response = s3.list_objects_v2(Bucket=os.environ.get('bucket'), Prefix='v2/abc/date='+date)
for s3_objects in response["Contents"]:
key = str(s3_objects["Key"]).split("/")[4] #this will give file name
print(key)
copy_source = {
'Bucket': os.environ.get('bucket'),
'Key': key
}
s3_dist = boto3.resource(
service_name=os.environ.get('serviceName'),
region_name=os.environ.get('regionName'),
aws_access_key_id=os.environ.get('awsAccessKeyId'),
aws_secret_access_key=os.environ.get('awsSecretAccessKey')
)
ack = s3_dist.meta.client.copy(copy_source, 'dest_bucket', file_to_copy)
文件名:Stat@2022-12-28@nameflyer@@_1672185644223109701__i-008f78f00fd9d9bfb.parquet
- 复制文件时获取错误:*
{'Error': {'Code': '404', 'Message': 'Not Found'},
我们如何读取文件复制在s3桶与特殊字符或有没有办法省略特殊字符和读取文件在桶。
1条答案
按热度按时间erhoui1w1#
您必须将您的
Prefix
添加到密钥名称中: