提问者:小点点

将数据从S3存储桶移动到外部供应商SFTP


我需要将文件从S3 bucket发送到外部客户端。FTP或SFTP可用于此目的。基于某些研究,我发现这可以使用Lambda或EC2来完成,但找不到详细的步骤。请让我知道如何做到这一点。


共2个答案

匿名用户

AmazonS3不能在任何地方“发送”文件。

因此,您需要一些运行在某处的代码,这些代码将:

  • 从Amazon S3下载文件
  • 通过SFTP将文件发送到外部客户端

这一切都很容易编写脚本。困难可能在于决定发送哪些文件以及如何处理任何错误。

您可能找不到关于该主题的任何文档,因为通过SFTP发送文件与AWS没有任何特定关系。只要你在任何地方都能做到。

例如,假设您希望通过在Amazon EC2实例上运行的Python程序或作为AWS Lambda函数运行:

  1. 通过使用AWS SDK for Python(boto3)下载所需的文件。参见:Amazon S3示例
  2. 通过SFTP发送文件。请参见:使用Boto 3将文件从AWS S3传输到SFTP

匿名用户

遇到了类似的需求,这可以通过lambda函数很容易地完成。

我们用例的功能需求是当文件准备好发送回客户时自动传输文件。

建筑

我们为基本用例想出了这个简单的架构。

工作流程

  1. 将文件上载到S3存储桶
  2. lambda函数的触发推送事件通知。我们更愿意为每个客户机使用一个单独的lambda函数,这样我们就可以在环境变量中存储所有SFTP连接详细信息。Env变量将用于存储服务器详细信息、凭据、文件路径等
  3. Lambda函数将从S3存储桶中提取文件
  4. Lambda将文件传输到外部服务器

值得补充的

值得在这个简单方法的基础上考虑更改

  1. 如果Lambda函数未能获取文件,那么它应该重试几次,如果仍然失败,他们应该向将文件上传到S3桶的客户端发送通知。
  2. 如果外部传输失败,Lambda应该将其添加到任何SQS队列中,这样任何应用程序都可以处理消息并通知系统,我们也可以在几天后再次设置重试。