c# - 从 .NET Core 3.1 中的 AWS Lambda 函数将字节上传到 SFTP 服务器
问题描述
我一直在到处搜索,但找不到答案,所以我最后的手段是在这里发帖。
我的要求是我需要使用用 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 函数上传到服务器。
推荐阅读
- python - 尝试查看列表中的值是否存在于特定字段的 mongoDB 集合中
- python - 如何检查在 Tk / Tkinter 程序启动期间是否保持 Shift?
- javascript - 创建了一个 Angular Provider,现在得到了 StaticInjectorError
- php - 我想制作一个接收发布请求并将数据写入文件的 php 页面,以下内容不起作用
- python - 在字典中使用 head 访问数据框
- python-2.7 - UDP 服务器套接字无法解析所有接收到的数据
- webpack - 后端使用虚拟主机的 Webpack 4 Dev Server 配置
- amazon-web-services - AWS JIRA CloudFormation
- sql-server - 在连接表的任一侧启用级联删除
- apache-kafka - Kafka 巡航控制 - NumValidWindows: (0/0) (NaN%), NumValidPartitions: 0/844 (0.000%)