从 S3 下载文件到 Rails 4 个应用程序

Download file from S3 to Rails 4 app

我有一个运行日常任务并生成多个文件的 AWS VM。我希望我的 Rails 应用程序下载这些文件并将它们放在应用程序内的一个文件夹中。 Ruby 中是否有 gem 或方法可以做到这一点?

我知道如何在 bash 中使用 s3cmd 执行此操作,我想我可以创建一个脚本来以这种方式获取它们,但正在寻找更原生的 rails 方式。

我正在为应用程序使用这些文件中的数据,但我不希望用户能够下载它们。

有官方亚马逊AWS Ruby SDK:http://aws.amazon.com/sdk-for-ruby/

还有一个名为 Fog 的开源 gem,对于更简单的项目可能更容易使用:http://fog.io/

aws-sdk v2 gem 为从 Amazon S3 下载对象提供了一个简单的界面。

require 'aws-sdk'

s3 = Aws::S3::Resource.new(
  region: 'us-east-1',
  access_key_id: '...',
  secret_access_key: '...'
)

s3.bucket('bucket-name').object('key').get(response_target: '/path/to/file')

在 v1 aws-sdk 中,从 s3 下载的代码是...

File.open(local_file_path, "wb") do |file|
  s3_object(s3_key).read do |chunk|
    file.write(chunk)
  end
end
You can use download_file method provided by aws-sdk.
s3 = Aws::S3::Resource.new(
  region: 'us-east-1',
  access_key_id: '...',
  secret_access_key: '...'
)
file_path = "file path name to download"
s3.bucket('bucket-name').object('key').download_file(file_path)