【问题标题】:download file from s3 to local automatically自动从 s3 下载文件到本地
【发布时间】:2021-10-24 01:32:49
【问题描述】:

我正在创建一个粘合作业(Python shell)来从 redshift 导出数据并将其存储在 S3 中。但是我将如何自动化/触发 S3 中的文件以下载到本地网络驱动器,以便第 3 方供应商将其获取。

不使用胶水,我可以创建一个在本地服务器上运行的 python 实用程序,以从 redshift 中提取数据作为文件并将其保存在本地网络驱动器中,但我想在云上实现这个框架以避免依赖本地服务器。

AWS cli 同步功能将无济于事,因为一旦供应商获取了文件,我不应该将其再次放入本地文件夹中。

请给我推荐好的替代品。

【问题讨论】:

  • 您是否有需要使用的现有 SFTP 服务器,或者您是否可以使用新服务器向第三方供应商提供文件传输?
  • 第 3 方可以简单地从 S3 中获取它吗?可以使用他们自己的 AWS 凭证或预签名 URL 来处理安全性。如今,所有系统都知道如何从 URL 下载。
  • @JohnRotenstein 我必须与接口团队核实,因为他们处理向供应商的 sftp 传输。听起来我可以使用预签名的 URL,如果他们能够下载的话。谢谢
  • @jscott 接口团队维护将文件从本地文件夹复制到 SFTP 服务器,以将文件发送给第 3 方。所以我几乎无法控制它。

标签: python amazon-web-services amazon-s3 aws-glue


【解决方案1】:

如果接口团队可以使用 S3 API 或 CLI 从 S3 获取对象以放在 SFTP 服务器上,那么通过 IAM 用户或角色授予他们 S3 访问权限可能是最简单的解决方案。接口团队可以编写一个脚本,定期获取在指定日期之后创建的 S3 对象列表并将它们复制到 SFTP 服务器。

如果他们不能使用 S3 API 或 CLI,您可以使用签名 URL。您仍然需要将 S3 对象 URL 传达给接口团队。队列将是一个很好的解决方案。但如果他们可以使用 AWS SQS 客户端,我认为他们很可能只使用 S3 API 来查找新对象并检索它们。

我不清楚谁控制 SFTP 服务器,是您的接口团队还是第三方供应商。如果您可以自己将文件推送到 SFTP 服务器,则可以创建一个运行 Lambda 函数的 S3 事件通知,以便在每次在 S3 存储桶中创建新对象时将对象复制到 SFTP 服务器。

【讨论】:

    猜你喜欢
    • 2020-11-27
    • 1970-01-01
    • 2019-07-03
    • 2016-09-27
    • 1970-01-01
    • 2020-08-15
    • 2020-04-09
    • 1970-01-01
    • 2019-02-02
    相关资源
    最近更新 更多