在AWS S3(AWS SDK)中监听对象更改

时间:2016-09-06 14:21:01

标签: ruby amazon-web-services amazon-s3 aws-sdk

在AWS S3中,我有一个名为'my-bucket'的存储桶,位于my-bucket下面我有以下结构:

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

使用AWS Ruby SDK,我可以通过ruby代码列出my-bucket下的所有项目:

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

这很好,我想知道是否可以让监听器监听使用AWS Ruby SDK上传到my-bucket/customers/products/的任何新文件对象?如果可能的话,怎么做?

1 个答案:

答案 0 :(得分:2)

无法直接使用代码完成。 但是,你可以做的是在SQS队列上有一个监听器(你可以用代码做)并在S3中创建一个事件,用于在每次完成的更改时将消息推送到队列在你的桶里。

对于SQS文档,请follow here(非常简单)。

要配置事件,您可以按照此detailed link进行操作,对于此版本的较短版本,请执行以下操作(首先创建SQS队列):

  1. 转到您的存储桶(通过 AWS控制台)。
  2. 单击属性选项卡(位于左上角)。
  3. 展开活动
  4. 点击添加通知
  5. 选择您想要收听的活动类型。
  6. 可选,如果您希望将事件应用于具有特定前缀的对象,请指定前缀。
  7. 可选,,后缀相同。
  8. 将其发送至 SQS队列
  9. 排队ARN
  10. 现在,您需要对Ruby执行的操作是侦听(使用轮询机制)队列中的新消息。 这些消息在某些模式中会有一些JSON格式,可以使用它。

    这应该可以解决你的问题。