如何在Rails中列出S3内容和下载链接

121 阅读1分钟

这篇文章解释了如何迭代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来生成每个对象的下载链接。