当新对象到达S3存储桶时触发Lambda函数

时间:2017-01-26 01:10:37

标签: python amazon-s3 amazon-ec2 lambda

我有一个名为' files'的S3存储桶。每天都有新文件到达那里。例如:

/files/data-01-23-2017--11-33am.txt
/files/data-01-24-2017--10-28am.txt

当新文件到达时,我如何制作Lambda函数并设置触发器以在EC2上执行一个shell脚本? 新文件的示例是:

/files/data-01-25-2017--11-43am.txt

我想在EC2上执行的命令是(带参数作为刚到的新文件名):

python /home/ec2-user/jobs/run_job.py data-01-25-2017--11-43am.txt

1 个答案:

答案 0 :(得分:2)

可以将Amazon S3配置为在创建新对象时触发AWS Lambda函数。但是,Lambda函数无权访问您的Amazon EC2实例。它不适合使用。

一些替代选项(这些是单独的选项,而不是多个步骤):

  • 不是在Amazon EC2实例上运行命令,而是将您的代码放入Lambda函数(不需要EC2实例)。 (最佳选择!)
  • 将Amazon S3配置为将邮件推送到Amazon SQS队列。让您的EC2实例上的代码定期轮询队列。当它收到消息时,在S3中处理该对象。
  • 将Amazon S3配置为向Amazon SNS主题发送消息。将应用程序的终点(实际上是API)订阅到SNS队列,以便在创建新对象时收到消息。