【问题标题】:How to use awscli inside python script?如何在 python 脚本中使用 awscli?
【发布时间】:2014-07-09 19:34:22
【问题描述】:

我正在使用带有 awscli 的 aws ec2 服务。现在我想将我在控制台中输入的所有命令放入一个 python 脚本中。我看到如果我在 python 脚本中编写 import awscli 它工作正常,但我不明白如何在脚本中使用它。例如,如何在import awscli 之后在 python 脚本中执行命令aws ec2 run-instances <arguments>?为了明确起见,我不是在寻找像 os.system('aws ec2 run-instances <arguments>') 这样的解决方案,我在寻找类似的东西

import awscli
awscli.ec2_run-instances(<arguments>)

【问题讨论】:

    标签: python amazon-web-services amazon-ec2 aws-cli


    【解决方案1】:

    您可以使用出色的 sh 包来做到这一点。 你可以模仿 python 包,用 sh 为你包装。

    import sh
    s3 = sh.bash.bake("aws s3")
    s3.put("file","s3n://bucket/file")
    

    【讨论】:

    • sh 包绝对很有趣。感谢您的指点。但它是not for Windows(将在我的 *nix 平台上使用该软件包)
    • 这应该是公认的答案,因为 boto3 缺乏功能和奇怪的限制
    【解决方案2】:

    CLI 将更适合 shell 提示符,要获得更好的 python API,请查看 boto 库。这个例子展示了如何启动一个实例:http://boto.readthedocs.org/en/latest/ec2_tut.html

    【讨论】:

    • 太棒了。我完全不喜欢 Bash Shell 脚本。我很急。为胜利而生的 Python。谢谢!
    • 除了 boto 库不能做 awscli 库可以做的一些事情。例如s3 同步。
    【解决方案3】:

    Boto3 没有 cli 的所有功能,因此您可能不得不在脚本中使用 cli 中的某些内容。例如,我在 boto3 中找不到 aws deploy push 的模拟,所以这里是我如何使用 python 脚本中的 cli 推送到 s3。尽管在 Julio 的观点上,我使用 boto 来处理其他所有事情。

    import subprocess
    
    cmd='aws deploy push --application-name SomeApp --s3-location  s3://bucket/Deploy/db_schema.zip --ignore-hidden-files' 
    push=subprocess.Popen(cmd, shell=True, stdout = subprocess.PIPE)
    print push.returncode
    

    【讨论】:

      【解决方案4】:

      好吧,您可以在 python 脚本中使用subprocess 来运行aws cli 命令。 例如,假设获取s3 存储桶列表。 那么,

      import subprocess
      
      push=subprocess.call(['aws', 's3', 'ls', '--recursive', '--human-readable', '--summarize'])
      

      import subprocess
      
      push=subprocess.run(['aws', 's3', 'ls', '--recursive', '--human-readable', '--summarize'])
      

      希望对你有所帮助。

      【讨论】:

        猜你喜欢
        • 2019-11-09
        • 2022-01-10
        • 2020-03-29
        • 2017-06-16
        • 2021-10-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多