【问题标题】:How to use awscli inside ruby script?如何在 ruby​​ 脚本中使用 awscli?
【发布时间】:2019-11-09 14:35:41
【问题描述】:

我有一个 awscli 命令可以将内容上传到 s3 存储桶。我需要在 ruby​​ 脚本上运行这个命令。该命令在终端中执行时有效。我尝试使用几种方法,例如backticksKernel#system

value = `aws s3 cp #{published_files} s3://example_bucket/#{meeting_id} --recursive --region us-west-2`

但他们似乎都没有执行任务。任何人都可以提出任何建议吗?会有很大帮助

【问题讨论】:

  • 您尝试过 AWS Ruby 客户端 docs.aws.amazon.com/sdkforruby/api/Aws/S3/Client.html 吗?您能否在从 Ruby 脚本执行时指定您有什么标准错误/标准输出?您是否在运行 awscli 命令的同一环境中执行脚本?
  • @Yann 该脚本在完成在线课堂后运行,脚本将接收课堂录音的路径。我需要将录音上传到存储桶。我在同一台服务器上执行了命令。
  • @Yann 我不需要回复。我只需要运行这个 cli 命令。
  • 响应可能包含尝试执行命令时发生的实际错误。 Kernel#system 应该可以工作。尝试以下调试步骤:执行irb 中的命令,尝试不带参数的简单aws 命令,如aws s3api list-buckets,打印带有插入参数的aws 命令并验证它们是否正确。

标签: ruby amazon-web-services amazon-s3 aws-cli


【解决方案1】:

请改用 sdk,因为它原生支持使用 s3 https://github.com/aws/aws-sdk-ruby

API 文档在此处列出 https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/S3.html

【讨论】:

  • 我需要上传一个很难通过sdk实现的文件夹。如果我能够从 ruby​​ 脚本执行此 cli 命令,它应该可以工作。
  • 然后让 ruby​​ 脚本使用脚本中的命令调用 bash 脚本
  • 知道如何从 ruby​​ 脚本调用 bash 脚本吗?
  • rubyguides.com/2018/12/ruby-system system(bash /path/to/your/script)
猜你喜欢
  • 2014-07-09
  • 1970-01-01
  • 2019-05-02
  • 2010-12-11
  • 2010-09-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-08
相关资源
最近更新 更多