如何为具有多个用户的数据项目设置AWS管道

时间:2018-03-19 12:08:06

标签: python amazon-web-services amazon-s3 amazon-ec2

我正在将完全用python编写的内部公司工具移动到AWS生态系统,但是在确定设置数据的正确方法以使其保持井井有效方面存在问题。整个公司的人员都使用此工具,每个人都在自己的数据集上运行工具(大小从几兆字节到几千兆字节不等)。目前,用户将代码克隆到本地计算机,然后在本地运行该工具;我们现在正试图将此用法转移到云端。

对于一个人来说,让他们将数据上传到s3,然后将python代码指向该数据以运行该工具是很简单的,但是我担心随着越来越多的人开始使用该工具, s3存储将变得混乱/混乱。

此外,每个人可能会对python工具稍作更改,以便对其数据进行自定义处理。我们的代码托管在bitbucket服务器中,用户将为他们的自定义工作分配回购。

我的问题是:

  1. S3和EC2是支持此类项目所需的唯一AWS工具吗?
  2. 用户上传数据,运行代码,然后下载结果以便数据在S3中保持整理的正确方法是什么?
  3. 在这种情况下使用EC2的最佳做法是什么?人们通常会为每个作业启动一个新的EC2,还是在单个EC2上安排多个作业更有效率?
  4. 有没有办法自动化数据上传过程,使用户可以轻松地在其数据上运行代码,而无需知道如何编码?
  5. 如果有人对如何设置此项目有任何意见,或者有任何相关指南/文档的链接,我们将不胜感激。谢谢!

1 个答案:

答案 0 :(得分:1)

你可以这样做。

a) A boto3 script to upload s3 data to specified bucket with maybe 
   timestamp appended to it.

b) Configure S3 bucket to send notification over SQS when a new item comes

c) Keep 2-3 EC2 machines running actively listening to SQS.

d) When a new item comes, it gets key from SQS.Process it.
  Delete event from SQS after successful completion.

e) Put processed data in some place, delete the key from Bucket.
   Notify user through mail.

对于自定义用户,他们可以创建一个新的分支并在上传的数据中提供它,ec2从那里读取它并检出所需的分支。在作业之后,可以删除分支。这可以是一行,其上有分支名称。这将涉及一次设置。您可能应该在EC2上使用某个进程管理器,如果它崩溃将重新启动进程。