在 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
队列):
- 转到您的存储桶(通过 AWS 控制台)。
- 单击属性 选项卡(在左上角)。
- 展开事件。
- 点击添加通知。
- 选择您想收听的事件类型。
- 可选,如果您希望事件应用于具有特定前缀的对象,请指定前缀。
- 可选,,后缀同理。
- 将其发送到 SQS 队列。
- 放入队列的
ARN
。
现在,您需要使用 Ruby
来监听(使用轮询机制)队列中的新消息。
这些消息在某些模式中将具有某种 JSON
格式,请使用它。
这应该可以解决您的问题。
关于ruby - 监听 AWS S3 中的对象变化(AWS SDK),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39351384/