2016-11-11 44 views
0

这里是我能想到的,但不知道这是最好的方式不同的方式把它们以EC2 Linux实例:检索文件和使用Java

  1. 建立在Java中使用GetObject一个控制台应用程序在AWS Java SDK提供。使用s3 sync
  2. 使用SNS> Lambda。使用REST API
  3. 使用SNS> HTTPS (Java Servlet)

性能很重要,因为我可能需要将许多变量大小的文件拉到linux实例。

我在选项1中看到的问题是我需要进行某种轮询行为。

使用选项2我不知道(a)是否需要定期运行此命令,或者它是否一直运行同步文件(b)如果它只运行一次,如何将它包装在java程序中?我也是Java和Linux的新手。如果这是.Net和Windows,我会创建一个Windows服务,但不知道什么是Java/Linux的等价物。

选项3不在桌面上,因为Lambda被排除(长篇故事)。

那么就性能,可维护性和可扩展性而言,哪种方法可以做到这一点呢?我需要监视的S3存储桶的数量会随着文件的频率/大小而变化(增加)。

感谢

+1

*我选择1所看到的问题是,我需要有一个适当某种轮询行为* - 为什么这是一个问题? cron的?或一个Java解决方案? –

+2

你能否更清楚地描述你的要求?例如,您是否说您需要立即将数据从S3复制到EC2,或者是常规批次可接受?哦,'aws s3 sync'是一次性的,不是连续的 - 你必须定期运行它来复制新文件。 –

+0

@Scary Wombat:这不是问题,而只是我必须处理的事情。我在想,我将不得不跟踪已处理的文件,但我也可以在将它们复制到linux实例后将它们移动到已处理的存储桶中。如果这是您的选择,那么您有什么建议可以避免,或者是否有任何投票的示例代码?不太熟悉Java和Linux,所以不胜感激。 – Pete

回答

1

只是好奇 - 你说你不熟悉Java和/或Linux,但你需要解决的问题。将使用Python而不是Java是一个选项?根据我的经验,使用外部程序包依赖关系的python项目比java更简单快捷。

你可以使用你和别人上面列出的解决方案的混合: 调用一个python脚本 2. Python脚本1. cron作业使用“S3同步”数据同步下来 3.无论是另一个S3调用将sync'd文件移动到另一个存储桶(或文件夹)或重命名这些文件以将它们标记为'已处理'

这是一个很好的开始,可以随时用更多的逻辑“加固”,以使万无一失。我会建议尝试像我上面列出的(使用Python),并使用一个或两个测试桶来创建你的想法。如果您坚持快速的“轮询”时间表,您可以在几小时内得到答案。 HTH

+0

谢谢。我只是看着http://stackoverflow.com/questions/24102666/local-access-to-amazon-s3-bucket-from-ec2-instance?rq=1,我看到s3fs-fuse和boto是选项好。我们是.net开发人员要求使用java,所以虽然我知道python,但我不认为这将是一个可行的选择,因为团队中没有其他人能够支持它。 – Pete

1

使用Lambda函数通过SSH将文件从S3 Bucket复制到EC2。 触发:S3对象创建

检查此链接:https://privatedock.wordpress.com/2017/08/21/s3-bucket-ec2-directory-sync-using-lambda/

+0

鼓励与外部资源的链接,但请在链接上添加上下文,以便您的同行用户了解它是什么以及它为什么在那里。如果目标网站无法访问或永久离线,请始终引用重要链接中最相关的部分。请参阅[如何回答](https://stackoverflow.com/help/how-to-answer) – SilverNak