【问题标题】:Push into S3 or Pull into S3 which is faster for a small file推入 S3 或拉入 S3,这对于小文件来说更快
【发布时间】:2026-01-14 16:10:02
【问题描述】:

所以我有一个用例,我需要将文件从本地 FTP 放到 S3。

每个文件 (XML) 的大小最大为 5KB。 文件数量为每分钟 100 个文件。 不,用例是这样的,一旦文件到达 FTP 位置,我需要立即放入 S3 存储桶。

实现这一目标的最佳方法是什么。 这是我的选择

  1. 在我的 FTP 位置使用 AWS CLI。(推送机制)
  2. 使用 lambda(拉动机制。
  3. 编写 java 应用程序以将文件从 FTP 放入 S3。

或者有什么内置的东西我可以利用。

基本上,我需要尽快将文件放入 S3,因为 UI 构建在 S3 之上,如果文件没有立即到达,我可能会遇到麻烦。

【问题讨论】:

    标签: amazon-web-services amazon-s3 ftp aws-lambda


    【解决方案1】:

    最简单的方法是使用AWS Command-Line Interface (CLI),或者如果您希望从应用程序代码中执行此操作,则使用 API 调用。

    通过 Lambda 这样做并没有什么意义,因为 Lambda 需要以某种方式从 FTP 检索文件,然后将其复制到 S3(因此它正在做双重工作)。

    您当然可以编写一个 Java 应用程序来执行此操作,或者只需调用 AWS CLI(用 Python 编写),因为它可以开箱即用。

    您可以使用aws s3 sync 复制所有新的/更新的文件,或者使用aws s3 cp 复制特定文件。如果您有这么多文件,最好指定文件,否则会浪费时间扫描许多不需要复制的历史文件。

    最好的情况是文件直接发送到 S3,完全不涉及 FTP!

    【讨论】:

    • 感谢您的信息...最后一点,正如您所说的将文件直接发送到 S3 ...我们该怎么做?例如,我在我的应用服务器中生成 xml 文件,我可以发送它直接从那里自己而不使用 FTP?
    • 绝对是!您的应用应直接调用 S3 并将 PutObject 调用到 S3。您需要使用AWS SDK 作为您首选的编程语言。 AWS 上的一切都可以通过来自 SDK 的 API 调用来工作。