在没有服务器的情况下将文件拉入 S3

Pull files into S3 without a server

是否可以在不使用 EC2 或任何其他服务器的情况下从 FTP 自动将文件拉入 S3(某种 cron 或计时器)。有什么方法可以只使用 S3 来实现吗?

S3 没有用于从任何外部源(http、ftp 等)获取文件的内置机制。

除了 S3 可以在内部从一个存储桶中获取内容并将其存储在另一个存储桶中之外,将数据导入 S3 的唯一方法是将其上传 "from" 到外部某个地方,这可能是 EC2例如,您自己的数据中心中的服务器,或者您家中地下室中的 Raspberry Pi,但通常这将是某处的某种实际服务器。

@AdamOcsvari 在评论中指出,Amazon Lambda function 可以提供容器,在该容器中可以执行获取文件并将其存储在 S3 中的代码,但 Lambda 是一种对外部事件做出反应的响应式服务。它目前不提供基于时间的事件机制,这将再次需要某种服务器来生成 Lambda 函数。

另一方面,fairly straightforward matter 在使用 S3 作为其后备存储的 EC2 实例上构建一个 SFTP/FTP 服务器(通过 s3fs 和 proftpd),这样发送到您的 FTP 服务器的文件就会自动存储在 S3 中,不需要进一步复制,但这当然也需要服务器,并且可能无法满足您无论如何需要完成的任务。

使用 EC2 安排此拉取的问题是 EC2 实例成为单点故障。如果实例失败,您可能会错过下载。

AWS Lambda 现在支持时间表,并且可以根据时间表触发函数。

是的,您可以使用 SNS 按计划触发 Lambda 函数:设置触发通知的时间,并连接消息以触发 Lambda 函数。

澄清一下:这种方法完全不需要使用 EC2。