通过CloudFront下载压缩的CSV文件

时间:2019-06-14 18:47:02

标签: amazon-s3 aws-lambda amazon-cloudfront

我有一个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文件扩展名。

1 个答案:

答案 0 :(得分:0)

Georgeawg帮助我意识到我可以只使用s3的copyObject函数将文件重命名为csv.gz。然后,我运行removeObject删除旧文件并返回csv.gz文件。它可以正确解压缩。