这篇文章解释了如何迭代AWS S3桶的内容并为每个对象生成下载链接。这个例子使用 aws-sdk版本2。在写这篇文章的时候,版本3是最新的,但仍然有很多遗留的应用程序使用版本2。
下面是代码:
1
2
3
4
5
6
7
8
9
10
bucket = Aws::S3::Bucket.new(ENV['S3_CSV_BUCKET_NAME'])
bucket.objects.each do |obj|
puts obj.presigned_url(
:get,
expires_in: 1200, # 20 mins
response_content_type: 'text/csv',
response_content_disposition: "attachment; filename=#{obj.key}"
)
end
首先,我们用桶的名字初始化一个 Aws::S3::Bucket实例,使用桶的名称。接下来,我们调用 objects方法,该方法返回桶中所有对象的集合。然后我们可以迭代这个集合,并调用 presigned_url来生成每个对象的下载链接。