AWS Lambda: не удается отправить файл на FTP

#node.js #amazon-web-services #ftp #aws-lambda

#node.js #amazon-веб-сервисы #ftp #aws-lambda

Вопрос:

У меня есть функция lambda, которая генерирует текстовый файл в корзине S3. Он способен это сделать. Теперь проблема, с которой я сталкиваюсь, заключается в той части, где тот же файл отправляется на FTP-сервер. FTP-сервер находится на том же VPC, и я использую модуль ‘promise-ftp’ для отправки файла на FTP. Когда это приложение запускается самостоятельно (без функции lambda), оно отправляет файл, но как только я использую код в качестве функции lambda, загрузка FTP завершается ошибкой. Вот код для загрузки файла на FTP-сервер:

 function CreatefileOnFTP(fileData, fileName, event, context, callback) {
    console.log('Sending file to FTP...');
    var buf = Buffer.from(fileData, 'utf-8');
    var ftp = new PromiseFtp();
    ftp.connect(config.ftpDetails)
        .then(function (serverMessage) {
            ftp.put(buf, fileName);
            console.log('File sent successfully to FTP...');
        }).then(function () {
            ftp.end();
            callback(null, 'File sent successfully to FTP...');
        });
}
  

Поскольку это рабочий код, я считаю, что должно быть что-то с конфигурацией в консоли AWS. Кто-нибудь знает о настройках (создание endpooint для VPC для доступа к FTP-серверу и т.д.) Для выполнения задачи? Более того, возможно ли это (загрузка по FTP) вообще с помощью функции lambda? Вот журнал cloudwatch:

 2019-04-23T07:05:53.984Z    03211d8d-e3f0-4c75-a938-386924601388 Unhandled rejection Error: Timeout while connecting to server at Timeout._onTimeout (/var/task/node_modules/@icetee/ftp/lib/connection.js:329:24) at ontimeout (timers.js:482:11) at tryOnTimeout (timers.js:317:5) at Timer.listOnTimeout (timers.js:277:5) 
  

Комментарии:

1. @MartinPrikryl точное исключение: 2019-04-23T07:05:53.984Z 03211d8d-e3f0-4c75-a938-386924601388 Ошибка необработанного отклонения: тайм-аут при подключении к серверу по истечении времени ожидания. _onTimeout (/var/task/node_modules/@icetee/ftp/lib/connection.js:329:24 ) в ontimeout (timers.js: 482:11) в tryOnTimeout (timers.js: 317:5) в Timer.listOnTimeout (timers.js: 277:5)

2. @MartinPrikryl даже если я увеличу время ожидания до 5 минут, он выдает ту же ошибку. Это очень маленький текстовый файл (в несколько КБ).

3. Похоже, он связан с вашими группами безопасности, можете ли вы проверить входящие правила группы безопасности, связанные с вашим FTP-сервером, и исходящие правила группы безопасности, связанные с вашей функцией Lambda?