2017-02-02 4 views
0

Если я пишу файл на диск внутри лямбда-функции, что с ним происходит после того, как я закончил функцию лямбда. Должен ли я явно указывать это, чтобы удалить, или будет автоматически удалять все после завершения функции?Что происходит с оставленными файлами, созданными функцией лямбда

+1

Пока экземпляр контейнера Lambda все еще «жив», все, что вы пишете на диск, должно быть доступно. Как правило, контейнеры не «живут» более нескольких минут. – idbehold

+0

Хорошо. Еще раз хочу убедиться, что я не буду наказан за запись на диск и не удалю явно то, что пишу, прежде чем закрывать экземпляр контейнера. Хотя это беспокойство кажется немым в ретроспективе – Jon

ответ

2

Функции Lambda, которые вы выполняете на AWS, выполняются в изолированном пространстве, называемом контейнером, который предоставляется только вам и этой функции. AWS не может немедленно очистить этот контейнер для ускорения последующих действий вашей лямбда-функции (поскольку контейнер уже подготовлен).

Когда ваша функция лямбда не выполняется в течение «количества времени», контейнер будет очищен AWS. Если вы публикуете ревизию своего кода, старые контейнеры очищаются, а новый - для вашей функции Lambda при следующем выполнении.

Важно помнить, что упоминаемые вами файлы и любые переменные, которые вы объявляете вне кода обработчика, по-прежнему будут присутствовать при последующих исполнениях. То же самое касается ваших файлов/tmp.

Зная, что это так, вы также должны подумать о том, чтобы перепроектировать ваш код, чтобы обеспечить чистый выход (даже при условии отказа), если «оставленные» из прошлых исполнений могут привести к вам конфликт.

Также важно убедиться, что вы никогда не предполагаете, что контейнер будет существовать при следующем выполнении.

Вы можете проверить некоторые официальные документы по этому вопросу здесь: http://docs.aws.amazon.com/lambda/latest/dg/lambda-introduction.html

Я надеюсь, что это помогает!

+0

Это очень помогает, спасибо! – Jon