ruby - 监听 AWS S3 中的对象变化(AWS SDK)

标签 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

很好,我想知道是否可以让 listener 使用 AWS Ruby 监听上传到 my-bucket/customers/products/ 的任何新文件对象软件开发工具包?如果可以,怎么做?

最佳答案

它不能直接用代码完成。 但是,您可以做的是在 SQS 队列上设置一个监听器(您可以使用代码来完成)并在 S3 中创建一个事件以将消息推送到队列在您的存储桶中完成的每项更改。

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

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

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

现在,您需要使用 Ruby 来监听(使用轮询机制)队列中的新消息。 这些消息在某些模式中将具有某种 JSON 格式,请使用它。

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

关于ruby - 监听 AWS S3 中的对象变化(AWS SDK),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39351384/

相关文章:

hadoop - Amazon Elastic Mapreduce:引导操作问题?

ruby - 在 OSX 和 Windows 上从 Ruby 运行任意系统命令

amazon-web-services - CloudFormation - 为 DynamoDB 创建表启用 TTL

java - 如何识别SQS-Queue不存在?

amazon-web-services - 定义有关复制滞后的 Cloudwatch 警报

c# - 如何使用 SDK 删除 AWS EC2 中的图像 (AMI)?

hadoop - 来自 inputStream 的 AWS 分段上传具有错误的偏移量

ruby - 为什么获取不到分配源信息?

php - 从 php 转换为 ruby​​ 时出错

ruby - 日期转换问题,使用 rails 3.0.7 和 ruby​​ 1.9.2