Ruby on rails 将文件从S3下载到Rails 4应用程序

Ruby on rails 将文件从S3下载到Rails 4应用程序,ruby-on-rails,ruby,ruby-on-rails-4,amazon-web-services,amazon-s3,Ruby On Rails,Ruby,Ruby On Rails 4,Amazon Web Services,Amazon S3,我有一个AWS虚拟机,它运行日常任务并生成几个文件。我希望我的Rails应用程序下载这些文件,并将它们放在应用程序内的文件夹中。Ruby中有没有一个gem或方法可以做到这一点 我知道如何在bash中使用s3cmd实现这一点,我想我可以创建一个脚本来实现这一点,但我正在寻找一种更为原生的rails方式 我正在将这些文件中的数据用于应用程序,但我不希望用户能够下载它们 有官方的Amazon AWS Ruby SDK: 还有一个名为Fog的开源gem,它可能更容易用于更简单的项目:aws sdkv2

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

我知道如何在bash中使用s3cmd实现这一点,我想我可以创建一个脚本来实现这一点,但我正在寻找一种更为原生的rails方式


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

有官方的Amazon AWS Ruby SDK:


还有一个名为Fog的开源gem,它可能更容易用于更简单的项目:

aws sdkv2 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

谢谢我实际上如何运行这个?我只是把它放在
lib/assets
的脚本中。在命令行上,我尝试使用
ruby/path/to/file
ruby runner/path/to/file
,我不断收到一个
访问被拒绝
错误。还尝试了
bundle exec rails runner eval(file.read'/path/to/file')“
我可以使用
加载路径/to/file来执行它,并且下载文件。您应该能够将该代码放入自定义的rake任务中,然后通过rake手动运行,或者从cron或任何您喜欢的调度系统运行。这是您的文件名。
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)