Загрузка заархивированного CSV-файла через CloudFront - PullRequest
0 голосов
/ 14 июня 2019

У меня есть лямбда-функция, которая при вызове выгрузит () из базы данных красного смещения в корзину 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-файл ОДНАКО, он находит файл без расширения файла ...

Есть ли способ вернуть заархивированный CSV-файл через CloudFront (или даже через s3, если CloudFront не подходит).

В нынешнем виде пользователи должны разархивировать, а затем добавлять расширение файла .csv при каждой загрузке моих данных, что не идеально.

1 Ответ

0 голосов
/ 17 июня 2019

Georgeawg помог мне понять, что я могу просто использовать функцию copyObject s3, чтобы переименовать файл в csv.gz. Затем я запускаю removeObject, чтобы удалить старый файл и вернуть файл csv.gz. Правильно расстегивается.

...