簡體   English   中英

將字節從 .NET Core 3.1 中的 AWS Lambda 函數上傳到 SFTP 服務器

[英]Upload bytes to a an SFTP server from an AWS Lambda function in .NET Core 3.1

我一直在到處搜索,但找不到答案,所以我最后的手段是在這里發帖。

我的要求是我需要使用用 C# (.NET Core 3.1) 編寫的 Lambda 從 S3 存儲桶 SFTP 文件。 不要問為什么或建議替代方案......我不是設定要求的人。 因此,我編寫了使用 SSH.NET 庫執行此操作的代碼,該庫在使用本地計算機上的 Mock Lambda 測試工具運行 lambda 代碼時起作用。 但是,部署到 AWS 的相同代碼在 30 秒后超時。 Lambda 位於 VPC 中,但同一 VPC 和安全組中的 EC2 能夠訪問 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 秒后連接超時。 那是異常消息。

問題是 VPC。 當刪除 VPC 配置並嘗試上傳一些基本文本而不是訪問 VPC 內的數據庫時,它能夠連接而不是超時。

您可以使用 SSH.NET 創建 SFTP 連接並將文件從 Lambda 函數上傳到服務器。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM