亲们, 我在 EC2 实例上设置了一个 SFTP 服务器来接收来自远程客户的文件,这些客户需要每次发送 3 个文件,一天中多次(每个客户每天连接多次,每次传输 3 个文件,但保留他们的名字改变他们的内容)。如果同时连接的客户数量受到控制,这会很好地工作,但是我无法准确控制每个客户何时连接(他们已经在他们的末端自动化了连接过程)。我预计我可能会遇到瓶颈,以防太多人尝试同时上传文件,并且一直在寻找整个过程的替代方案(某种“分布式文件传输”)。那时我偶然发现了按定义分发的 AWS S3,并且想知道我是否可以执行以下操作:
- 创建一个名为“传入文件”的存储桶
- 在此存储桶中创建多个文件夹,每个客户一个
- 设置文件传输机制(我相信我必须以某种方式使用 S3 的 SDK)
- 为每个客户提供一个客户端应用程序,以便他们可以在自己身边运行它以将文件上传到存储桶内的特定文件夹
最后一点在 SFTP 上很容易,因为您可以为每个用户设置一个“根”文件夹,这样当用户连接到服务器时,它会自动登陆其适当的文件夹。不确定是否可以在 S3 上解决此类问题。此外,文件传输机制不仅必须提供访问存储桶的凭据,还必须提供访问文件夹的“子凭据”。
我一直在深入研究 S3,但不太确定整个想法是否 (a) 可行和 (b) 实用。我的原始 SFTP 解决方案的另一个限制是,根据定义,SFTP 服务器是单点故障,我很乐意避免这种情况。如果有人能阐明这一点,我会很高兴(顺便说一句,我们也欢迎其他解决方案)。
请注意,我正在尝试完全消除 SFTP 服务器,而不是将 S3 存储桶挂载为 SFTP 服务器的“根文件夹”。
谢谢
最佳答案
您可以创建一个 S3 策略,只授予特定前缀(您计划中的“文件夹”)的访问权限。您的客户唯一需要的是允许执行 PUT 请求。您还需要为每个客户创建一组访问 key 。
看来你过于复杂了。如果 SFTP 是瓶颈并且不是冗余的,您始终可以创建一个规模组(在其前面使用 ELB 或 DNS 循环)并使用 sshfs
或 goofys 将 S3 挂载到 EC2 实例
。如果成本不是问题,您甚至可以将 EFS 安装为 NFS 共享。
关于amazon-web-services - 使用 AWS S3 作为 SFTP 的替代品,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41347842/