2016-09-06 2 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 Console).
  2. Нажмите Свойства вкладка (в верхнем левом углу).
  3. Развернуть Мероприятия.
  4. Нажмите Добавить уведомление.
  5. Выберите тип событий, которые вы хотите прослушать.
  6. Дополнительно,, если вы хотите, чтобы событие применялось к объектам с определенным префиксом, укажите префикс.
  7. Дополнительно,, то же самое для суффикса.
  8. Отправить по электронной почте SQS Queue.
  9. Поместить в очередь ARN.

Теперь все, что вам нужно сделать с Ruby, - это прослушивание (с помощью механизма опроса) для нового сообщения в очереди. В некоторой схеме сообщения будут иметь формат JSON, поиграйте с ним.

Это должно решить вашу проблему.

Смежные вопросы