доступ к / tmp или другой временной файловой структуре в бессерверной лямбда-функции

Функция AWS Lambda с использованием консоли

В AWS Lambda моя функция сохранит файл из S3 в каталог /tmp следующим образом:

local_filepath = '/tmp/file.txt'

s3.download_file(
  Bucket=bucket,
  Key=key,
  Filename=local_filepath
)

и жизнь была хорошей.

Функция AWS Lambda с использованием бессерверного режима

Однако использование бессерверного режима - это совсем другая история.

Такая же настройка приводит к следующей ошибке:

[Errno 2] No such file or directory: '/tmp/processed.txt.7E4850BD'

Поэтому я бы предположил, что в среде бессерверного исполнения нет /tmp dir.

Я пытался просто сохранить файл в текущем каталоге с помощью local_filepath = 'file.txt', но получаю OSError(30, 'Read-only file system') ошибку.


person ChumiestBucket    schedule 15.05.2019    source источник
comment
Вы можете поделиться полным кодом? Вы должны иметь возможность писать в /tmp без сервера, это та же лямбда-среда. Похоже, что в вашем коде что-то есть ...   -  person jogold    schedule 15.05.2019


Ответы (1)


Попробуйте использовать модуль tempfile, у него есть набор технических средств для извлечения временного каталога для использования:

local_filepath = os.path.join(tempfile.gettempdir(), 'file.txt')
person nosklo    schedule 15.05.2019