2016-09-06 169 views
1

在AWS S3,我有一个桶命名'my-bucket'变化,my-bucket我有以下结构下:听对象AWS S3(AWS SDK)

my-bucket/ 
    customers/ 
     products/ 
       - data1.txt 
       - data2.txt 

AWS Ruby SDK,我可以列出所有下的项目my-bucket由Ruby代码:

require 'aws-sdk' 

s3 = Aws::S3::Resource.new(region: 'us-west-2') 

bucket = s3.bucket('my-bucket') 

# Show only the first 50 items 
bucket.objects.limit(50).each do |item| 
    puts "Name: #{item.key}" 
end 

这是好的,我想知道是否有可能有一个听众听上传到my-bucket/customers/products/与AW任何新的文件对象S Ruby SDK?如果可能的话,该怎么做?

回答

2

它不能直接用代码完成。 但是,您可以执行的操作是在SQS队列(您可以使用代码执行此操作)上拥有一个监听器,并在S3中创建一个事件,以便在您的存储桶中完成的每次更改中将消息推送到队列中。

对于SQS文件请follow here(这是非常简单的)。

对于配置事件你可以按照这个detailed link,以及较短版本的这种,做如下(首先创建一个SQS队列):

  1. 转到您的桶(通过AWS控制台 )。
  2. 单击属性选项卡(位于左上角)。
  3. 展开事件
  4. Click 添加通知
  5. 选择您想要收听的事件类型。
  6. 可选,如果您希望将事件应用于具有特定前缀的对象,请指定前缀。
  7. 可选,,后缀相同。
  8. 发送到SQS队列
  9. 放入队列的ARN

现在,您只需要使用Ruby就可以侦听(使用轮询机制)队列中的新消息。 这些消息在某个模式中会有一些JSON的格式,请使用它。

这应该解决您的问题。