python - 配置 Boto3 有条件地不执行命令
问题描述
我正在 Boto3 中构建脚本集合,我希望有一个 DRY_RUN 选项,当设置为 True 时不会执行 Boto3 命令。我想先进行此试运行,以便在实时运行脚本之前先查看日志。
我知道 EC2 客户端有一个DryRun
可以传入的参数,但这会引发我不想要的错误。此外,我的脚本也大量处理没有DryRun
选项的 Cloudformation 客户端。
我首先在我所有的 Boto3 命令前面加上,if not DRY_RUN: ec2_client...
但这不是最优雅的解决方案。我还考虑过将每个 Boto3 命令作为参数传递给实用程序函数,eval()
如果 DRY_RUN 为 False,该函数用于执行该函数,但这也不理想。
是否有 Boto3 配置设置、中间件、模拟/存根库或一些 Python 元编程技术可能对这里有所帮助?
解决方案
我做了这样的事情只是为了测试:
def create_snapshot(resource, volume_id):
volume = resource.Volume(volume_id)
try:
snap = volume.create_snapshot(
DryRun=True
)
except ClientError as ce:
print(ce)
pass
except Exception as e:
print(e)
raise
这样,您将看到调用是否会成功,但不会中断您的脚本。
推荐阅读
- python - 浮点数转换为从 .dat 文件读取的符号。不确定编码
- java - 如何编写从 CSV 文件读取输入的 TensorFlow Lite 解释器?
- gtk - 确定 Gtk.drag_motion 上的小部件类型
- spring - 将 Spring Boot 应用程序迁移到最新的 Java 版本 (Java 15)
- javascript - javascript从路径下载文件
- javascript - 在地址栏中隐藏 HTML 页面的域
- javascript - DiscordJS v12 userinfo 命令不起作用
- python - python中groupby时选择特定行的值
- java - 如何验证特定类型并使我的列表“类型安全”
- excel - 单元格绝对值最大值生成的宏