【问题标题】:Copy files from S3 onto EC2 instance using Boto3 (script running on local server)?使用 Boto3(在本地服务器上运行的脚本)将文件从 S3 复制到 EC2 实例?
【发布时间】:2015-10-05 12:31:15
【问题描述】:

我正在本地服务器上使用 Boto3(第一次使用 boto/3)运行 python 脚本,该服务器监视 S3 存储桶中的新文件。当它检测到存储桶中的新文件时,它会启动一个停止的 EC2 实例,该实例上加载了软件来处理这些文件,然后需要以某种方式指示 S3/EC2 将新文件从 S3 复制到 EC2。如何使用在本地服务器上运行的 Boto3 脚本来实现这一点?

本质上,本地运行的脚本是流程的编排器,需要在有新文件要处理时启动实例,并在 EC2 实例上处理它们并将处理后的文件复制回 S3。我目前正试图弄清楚如何通过本地运行的脚本将文件从 S3 复制到 EC2。我想避免从 S3 下载到本地服务器然后上传到 EC2。

建议/想法?

【问题讨论】:

  • 你在 ec2 中有哪台服务器。
  • @GanesanK:我拥有的 EC2 实例是运行 Ubuntu 的 r3.4xlarge 实例。

标签: amazon-web-services amazon-ec2 amazon-s3 boto boto3


【解决方案1】:

您应该考虑将Lambda 用于任何基于 S3 事件的处理。为什么不需要启动和运行服务器?

【讨论】:

  • 嗯,我所指的“处理”实际上是一个执行生物信息学分析的非常复杂的管道......并且需要精心设置。我只是使用上传到 S3 存储桶作为启动/停止预配置实例的触发器。不过,我确实看到了 Lambda 用于某些部分......对于它的部分依赖事件作为触发各种步骤的手段。您知道 Lambda 是否已用于生物信息学管道吗?
  • @bioinformant 我会考虑使用 Lambda 作为管道的发起者,而不是轮询 S3。然后我会考虑对管道本身使用简单工作流(或者可能是数据管道)。编排复杂的管道、排序、协调、处理故障、带外流程等都需要可靠的工作流机制。
【解决方案2】:

如果存储桶的名称和其他参数没有改变,您可以通过在您的 EC2 实例上设置一个脚本来实现它,该脚本将从存储桶中提取最新内容并将此脚本设置为每次您的 EC2 时触发启动。

如果 s3 命​​令参数确实发生了变化,并且您必须从本地机器上使用 boto 运行它,那么您需要找到一种方法来使用 boto SSH 进入 EC2 实例。检查此模块:boto.manage.cmdshell 和类似问题:Boto Execute shell command on ec2 instance

【讨论】:

  • 存储桶的名称将保持不变......但是,文件列表(即上传到 S3 的新文件......并且需要在 EC2 上处理)将会改变。 IE。我需要以某种方式将该文件列表传递给 EC2,以便它下载它们然后进行处理。感谢您的 cmdshell 建议...将对此进行调查...
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-04-13
  • 2018-04-07
  • 1970-01-01
  • 2017-04-04
  • 2023-03-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多