#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?