amazon-web-services - 将文件 (csv) 的 FTP 自动传输到 Amazon S3 存储桶
问题描述
我想自动将数据上传/摄取到 Amazon S3 存储桶。我不想将 Filezilla 之类的软件用于 FTP 到 S3。
这些文件每天都可用于 FTP 服务器。我想每天从 FTP 服务器中挑选这些文件并存储在 Amazon S3 中。我可以设置 cron 作业或脚本以经济高效的方式在 AWS 中运行吗?哪些 AWS 实例可以帮助我实现这一目标。
文件大小约为 1GB。
解决方案
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/
推荐阅读
- xamarin - ListView 项目如何在 Xamarin 表单 UWP 中获得焦点?
- html - 如何将文本环绕在图像周围并将标题保留在图像下方?
- html - 使具有绝对宽度的组件具有响应性
- xamarin.forms - setDataSource 失败 con Xamarin Forms MediaElement
- visual-studio - .csproj 文件中缺少 OutputType 标记
- java - 字符串与字符串生成器
- python-3.x - 如何在 Django 中使用 group by 获取 id 字段
- android - 在Android中单击后如何禁用按钮1秒?
- php - 当搜索结果中没有可用记录时隐藏刀片的分页-Laravel
- python - 如何打印单词直到达到特定单词?