#c# #.net #asp.net-core #aws-lambda
#c# #.net #asp.net-core #aws-lambda
Вопрос:
Я продолжаю искать везде и не могу найти ответ, поэтому мое последнее средство — опубликовать здесь.
Мои требования заключаются в том, что мне нужно передать SFTP-файл из корзины S3, используя лямбду, написанную на C # (.NET Core 3.1). Не спрашивайте почему и не предлагайте альтернативы… Я не был тем, кто устанавливал требования. Итак, я написал код, который выполняет это с использованием SSH.NET библиотека, которая работает при запуске лямбда-кода с использованием инструмента Mock Lambda Test на моем локальном компьютере. Однако время ожидания того же кода, развернутого в AWS, истекает через 30 секунд. Лямбда находится в VPC, но EC2 в той же VPC и группе безопасности может получить доступ к SFTP-серверу, поэтому я не думаю, что это проблема, связанная с сетью.
Вот код, который я использую для загрузки:
try
{
using (var sftpClient = new SftpClient(server, port, username, password))
{
sftpClient.Connect();
if (sftpClient.IsConnected)
{
sftpClient.WriteAllText(path, contents);
LambdaLogger.Log($"Uploaded file to {server}");
}
else
{
LambdaLogger.Log($"Could not connect to the {server} SFTP server.");
}
sftpClient.Disconnect();
}
}
catch (Exception e)
{
LambdaLogger.Log($"An error has occurred while uploading to the {server} SFTP server. Error: {e.Message}");
}
Редактировать: ошибка, которую я вижу в журналах lambda, заключается в том, что время ожидания соединения истекает через 30 секунд. Это сообщение об исключении.
Комментарии:
1. Какую ошибку вы получаете?
2. Время ожидания соединения @ChetanRanpariya истекло через 30 секунд.
Ответ №1:
Проблема заключалась в VPC. При удалении конфигурации VPC и просто попытке загрузить некоторый базовый текст вместо доступа к базам данных в VPC он смог подключиться, а не по таймауту.
Вы МОЖЕТЕ использовать SSH.NET чтобы создать SFTP-соединение и загрузить файлы на сервер из лямбда-функции.