首页 > 解决方案 > 将文件 (csv) 的 FTP 自动传输到 Amazon S3 存储桶

问题描述

我想自动将数据上传/摄取到 Amazon S3 存储桶。我不想将 Filezilla 之类的软件用于 FTP 到 S3。

这些文件每天都可用于 FTP 服务器。我想每天从 FTP 服务器中挑选这些文件并存储在 Amazon S3 中。我可以设置 cron 作业或脚本以经济高效的方式在 AWS 中运行吗?哪些 AWS 实例可以帮助我实现这一目标。

文件大小约为 1GB。

标签: amazon-web-servicesamazon-s3amazon-ec2aws-lambda

解决方案


Amazon S3 是一种对象存储服务。它不能从外部位置“拉”数据。

因此,您将需要一个脚本或程序来:

  • 从 FTP 服务器检索数据,以及
  • 将数据上传到 Amazon S3

最好从 FTP 服务器本身运行这样的脚本,这样数据就可以发送到 S3,而无需先从 FTP 服务器下载。如果这不可能,那么您可以在 Internet 上的任何计算机上运行该脚本,例如您自己的计算机或 Amazon EC2 实例。

上传到 Amazon S3 的最简单方法是使用AWS 命令​​行界面 (CLI)。它有一个aws s3 cp复制文件的命令,或者根据需要复制的内容,使用aws s3 sync自动复制新文件或修改文件的命令可能更容易。

该脚本可以通过计划(Linux 上的 cron 或 Windows 上的计划任务)触发。

如果您使用的是 Amazon EC2 实例,则可以通过在不需要时关闭实例来节省资金。流程可能是:

  • 创建触发 AWS Lambda 函数的Amazon CloudWatch 事件规则
  • AWS Lambda 函数可以调用StartInstances()以启动已停止的 EC2实例
  • Amazon EC2 实例可以使用将运行您的进程的启动脚本(请参阅下面的详细信息)
  • 在进程结束时,告诉操作系统关闭 ( sudo shutdown now -h)

这可能看起来有很多步骤,但 CloudWatch 事件和 Lambda 函数的配置很简单。

要在每次 Linux 实例启动时执行脚本,请将其放入:/var/lib/cloud/scripts/per-boot/

另请参阅:EC2 实例完成任务后自动停止 - DEV 社区


推荐阅读