Как я могу загрузить файлы CSV из Lambda в корзину S3? "[ОШИБКА] KeyError: 'Записи' и моя лямбда-функция также не запускаются s3 - PullRequest
0 голосов
/ 03 февраля 2020

Я извлек файл Excel с несколькими листами из S3, и я перевожу каждый лист в формат csv и выполняю простую очистку, прежде чем загружать его в другое ведро S3.

Это мой код на данный момент для моей Lambda Функция, но я не знаю, как загрузить файл CSV для каждого листа на S3.

Также я хочу изменить пустые ячейки в файлах Excel с Nan, но я не знаю, как.

Обновление: я попробовал решение из ответа ниже. Я получаю «errorMessage»: «Records», «errorType»: «KeyError». Моя лямбда-функция также не запускается s3.

1 Ответ

0 голосов
/ 03 февраля 2020

Вы можете хранить файлы в локальной файловой системе Lambda в каталоге /tmp/. Существует ограничение в 500 МБ, поэтому удаляйте эти файлы после завершения работы с ними.

Поэтому, когда вы создаете файл, поместите его в этот каталог:

with open("/tmp/data%s.csv" %(sheet6.name.replace(" ","")), "w", encoding='utf-8') as file:

Вы можете затем загрузите его в Amazon S3, используя upload_file(file, bucket, key):

s3.upload_file('/tmp/data1.csv', 'mybucket', 'data1.csv')

Вот некоторый код, который я имею для извлечения Bucket and Key, который вызвал функцию Lambda:

import urllib

def lambda_handler(event, context):

  bucket = event['Records'][0]['s3']['bucket']['name']
  key = urllib.parse.unquote_plus(event['Records'][0]['s3']['object']['key'])
  ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...