繁体   English   中英

如何使用本地输入和 output 在 aws ec2 上运行代码

[英]How to run code on aws ec2 with local input and output

我在 aws ec2 上有代码。 现在,它接受来自 s3 的输入和 output 文件。 这是一个低效的过程。 我必须将输入文件上传到s3,将s3复制到ec2,运行程序,将output文件从ec2复制到s3,然后在本地下载。

有没有办法在 ec2 上运行代码并接受本地文件作为输入,然后将 output 保存在我的本地计算机上?

看来您的情况是:

  • Amazon EC2 实例上的某些软件用于处理本地磁盘上的数据
  • 您正在通过 Amazon S3 手动将该数据传入/传出实例

Amazon EC2 实例就像任何其他计算机一样。 它运行与您公司服务器上相同的操作系统和相同的软件。 但是,它确实从云中受益,因为它可以轻松访问其他服务(例如 Amazon S3),并且可以关闭资源以节省费用。

优化当前流程

在坚持当前流程的同时,您可以通过一些简单的自动化来改进它:

  • 通过AWS 命令行界面 (CLI)命令将您的数据上传到 Amazon S3,例如: aws s3 cp file.txt s3://my-bucket/input/
  • 在 EC2 进程上执行一个脚本,该脚本将:
  • 下载文件,例如: aws s3 cp s3://my-bucket/input/file.txt.
  • 处理文件
  • 将结果复制到 S3,例如: aws s3 cp file.txt s3://my-bucket/output/
  • 将结果下载到您自己的计算机,例如: aws s3 cp s3://my-bucket/output/file.txt.

使用 scp 复制文件

假设您连接到 Linux 实例,您可以通过以下方式实现自动化:

  • 使用scp将文件复制到 EC2 实例(与 SSH 命令非常相似)
  • 使用ssh和 [remote command(https://malcontentcomics.com/systemsboy/2006/07/send-remote-commands-via-ssh.html) 参数触发远程进程
  • 完成后使用scp将文件复制下来

重新架构以使用 AWS Lambda

如果在数据上运行的作业适合作为 AWS Lambda function 运行,则流程为:

  • 将数据上传到 Amazon S3
  • 会自动触发 Lambda function ,它处理数据并存储结果
  • 从 Amazon S3 下载结果

请注意,AWS Lambda function 最多运行 15 分钟,临时磁盘空间限制为 512MB。 (这可以通过使用 Amazon EFS 进行扩展。)

介于两者之间的东西

还有其他上传/下载数据的方法,例如在 EC2 实例上运行 web 服务器并通过 web 浏览器进行交互,或使用 AWS Systems Manager Run Command 在 EC2 实例上触发进程。 这样的选择将基于您被允许修改实例上运行的内容的程度以及您的技术能力。

@John Rotenstein 我们通过 VPC 附加 AWS EFS 卷解决了将 60MB+ 模型加载到 Lambdas 的问题。 还解决了诸如 Tensorflow、opencv 等大型库的问题。基本上 lambda 层几乎变得多余,您真的可以高枕无忧,如果不从源代码构建,这节省了我们几天的时间专注于真正的问题。 也每次都从 S3 加载。 EFS 方法显然需要一个 ec2 实例。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM