【问题标题】:Is there a way to upload to S3 using ruby net::ssh有没有办法使用 ruby​​ net::ssh 上传到 S3
【发布时间】:2015-05-08 23:57:00
【问题描述】:

我想使用 Net::SSH 远程上传位于某些主机上的文件

文件很大,不想下载,因为太费时间,那些主机是AWS上的EC2机器

Net::SSH.start(final_host, "ubuntu") do |ssh|
    #download the tar file to local
    ssh.scp.download!(remote, local)
    #upload file to s3
    bucket.objects[(Time.now-36000).to_date.to_s + key].write(:file => local)
end

我使用此代码上传文件,但下载完成后

【问题讨论】:

  • 你能分享一些代码吗?到目前为止,您尝试过什么?
  • 是的,我分享我正在使用的代码
  • 您是否有不想使用AWS Ruby SDKFog gem 的原因?
  • bucket.objects 是要上传到 S3 的 AWS Ruby SDK 对象,但我在本地进行
  • 你有什么办法吗?

标签: ruby amazon-web-services amazon-s3 net-ssh


【解决方案1】:

由于您可以通过 SSH 访问您的 EC2 实例,因此您可以在其上运行命令以直接从那里上传到 S3。如果你安装了s3cmd,它会是这样的

Net::SSH.start(final_host, 'ubuntu') do |ssh|
  s3_name = (Time.now - 36000).to_date.to_s + key
  ssh.exec "s3cmd put #{remote} s3://#{bucket}/#{s3_name}"
end

或者,您可以像现在一样使用 AWS 开发工具包将 Ruby 脚本放在实例上,然后运行:

ssh.exec "ruby upload_to_s3.rb #{remote}"

【讨论】:

    猜你喜欢
    • 2013-05-24
    • 2021-03-31
    • 1970-01-01
    • 2011-02-10
    • 1970-01-01
    • 2022-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多