【发布时间】:2020-04-09 16:57:27
【问题描述】:
我正在 Boto3 中构建一个脚本集合,我想要一个 DRY_RUN 选项,当设置为 True 时不会执行 Boto3 命令。我想先进行此试运行,以便在实时运行脚本之前先查看日志。
我知道 EC2 客户端有一个可以传入的 DryRun 参数,但这会引发我不想要的错误。此外,我的脚本也大量处理没有 DryRun 选项的 Cloudformation 客户端。
我首先在我所有的 Boto3 命令前面加上 if not DRY_RUN: ec2_client...,但这不是最优雅的解决方案。我还考虑过将每个 Boto3 命令作为参数传递给实用函数,如果 DRY_RUN 为 False,该实用函数使用 eval() 执行该函数,但这也不理想。
是否有 Boto3 配置设置、中间件、模拟/存根库或一些 Python 元编程技术可能对此有所帮助?
【问题讨论】:
-
所有 API 调用都在 boto3
client或resource对象上运行。因此,在将命令传递给超类之前,您可能可以对对象进行子类化以添加您自己的逻辑。
标签: python amazon-web-services metaprogramming boto3