我有一个lambda函数,当调用该函数时,它会使用以下命令将redload数据库中的unload()卸载到s3存储桶中:
unload ('<SQL QUERY TO UNLOAD')
to 's3://<BUCKET
iam_role 'arn:aws:iam::<ROLEID>
delimiter ','
PARALLEL OFF
ESCAPE
ALLOWOVERWRITE
GZIP
在该操作完成后,我尝试运行以下nodejs代码,以尝试添加ContentType和ContentEncoding标头:
s3.copyObject({
Bucket: directory,
MetadataDirective: 'REPLACE',
CopySource: `${directory}/${files[i].Key}`,
ContentType: 'text/csv',
ContentEncoding: 'gzip',
Key: `${files[i].Key}`
}).promise()
最后,完成后,我通过电子邮件将CloudFront链接发送给请求数据的用户。当用户点击链接时,他们将下载.gz文件。我期望当用户解压缩文件时,他们找到一个.csv文件,但是他们找到的文件没有文件扩展名...
是否可以通过CloudFront(甚至如果不选择CloudFront,则通过s3)返回压缩的csv文件。
按现状,用户每次下载我的数据时都必须解压缩然后添加.csv文件扩展名。
答案 0 :(得分:0)
Georgeawg帮助我意识到我可以只使用s3的copyObject函数将文件重命名为csv.gz。然后,我运行removeObject删除旧文件并返回csv.gz文件。它可以正确解压缩。