将数据从 S3 存储桶移动到外部供应商 SFTP
Move data from S3 bucket to external vendor SFTP
我需要将文件从 S3 存储桶发送到外部客户端。 FTP 或 SFTP 可用于此。基于某些研究,我发现这可以使用 Lambda 或使用 EC2 来完成,但找不到详细的步骤。请告诉我如何做到这一点。
Amazon S3 无法在任何地方 "send" 文件。
因此,您需要一些代码 运行 'somewhere' 将:
- 从 Amazon S3 下载文件
- 通过 SFTP 将文件发送到外部客户端
这一切都很容易编写脚本。困难可能在于决定 发送哪些 文件以及如何处理任何错误。
您可能找不到关于该主题的任何文档,因为通过 SFTP 发送文件与 AWS 没有任何具体关系。只需按照您在任何地方的方式进行即可。
例如,假设您想通过 Python 程序 运行 在 Amazon EC2 实例上或作为 AWS Lambda 函数来执行此操作:
- 使用适用于 Python (boto3) 的 AWS 开发工具包下载所需文件。参见:Amazon S3 examples
- 通过 SFTP 发送文件。参见:
遇到了类似的需求,这可以使用 lambda 函数轻松完成。
我们用例的功能要求是在文件准备好发送回客户时自动传输文件。
建筑
我们为基本用例提出了这种简单的架构。
工作流
- 将文件上传到 S3 存储桶
- 触发 lambda 函数的推送事件通知。最好为每个客户端使用单独的 lambda 函数,以便我们可以将所有 SFTP 连接详细信息存储在环境变量中。
环境变量将用于存储服务器详细信息、凭据、文件路径等...
- Lambda 函数将从 S3 存储桶中获取文件
- Lambda 会将文件传输到外部服务器。
值得补充
值得考虑在这种简单方法之上进行更改
- 如果 Lambda 函数未能获取文件,那么它应该重试几次,如果仍然失败,他们应该向正在将文件上传到 S3 存储桶的客户端发送通知。
- 如果外部传输失败,那么 Lambda 应该将其添加到任何应用程序可以处理消息并通知系统的任何 SQS 队列,我们也可以设置几天后重试。
我需要将文件从 S3 存储桶发送到外部客户端。 FTP 或 SFTP 可用于此。基于某些研究,我发现这可以使用 Lambda 或使用 EC2 来完成,但找不到详细的步骤。请告诉我如何做到这一点。
Amazon S3 无法在任何地方 "send" 文件。
因此,您需要一些代码 运行 'somewhere' 将:
- 从 Amazon S3 下载文件
- 通过 SFTP 将文件发送到外部客户端
这一切都很容易编写脚本。困难可能在于决定 发送哪些 文件以及如何处理任何错误。
您可能找不到关于该主题的任何文档,因为通过 SFTP 发送文件与 AWS 没有任何具体关系。只需按照您在任何地方的方式进行即可。
例如,假设您想通过 Python 程序 运行 在 Amazon EC2 实例上或作为 AWS Lambda 函数来执行此操作:
- 使用适用于 Python (boto3) 的 AWS 开发工具包下载所需文件。参见:Amazon S3 examples
- 通过 SFTP 发送文件。参见:
遇到了类似的需求,这可以使用 lambda 函数轻松完成。
我们用例的功能要求是在文件准备好发送回客户时自动传输文件。
建筑
我们为基本用例提出了这种简单的架构。
工作流
- 将文件上传到 S3 存储桶
- 触发 lambda 函数的推送事件通知。最好为每个客户端使用单独的 lambda 函数,以便我们可以将所有 SFTP 连接详细信息存储在环境变量中。 环境变量将用于存储服务器详细信息、凭据、文件路径等...
- Lambda 函数将从 S3 存储桶中获取文件
- Lambda 会将文件传输到外部服务器。
值得补充
值得考虑在这种简单方法之上进行更改
- 如果 Lambda 函数未能获取文件,那么它应该重试几次,如果仍然失败,他们应该向正在将文件上传到 S3 存储桶的客户端发送通知。
- 如果外部传输失败,那么 Lambda 应该将其添加到任何应用程序可以处理消息并通知系统的任何 SQS 队列,我们也可以设置几天后重试。