如何在不使用boto3

时间:2018-04-18 23:25:46

标签: amazon-web-services amazon-ec2 boto3 snapshot

我尝试使用boto3创建aws快照。我们的想法是创建快照,以便我们可以恢复损坏的实例卷。目前,它比重新启动,重新创建和重新配置更快。

我尝试使用boto3自动执行此操作,但脚本始终会关闭实例。这在我们的生产环境中不会发生。

当我在AWS Web控制台中手动创建快照时,它不会关闭实例。

这是我为所有实例创建快照的基本代码(已过滤):

timestr = time.strftime("%Y%m%d-%H%M%S")
for instance in instances:
    blockCount = 0
    for blockDevice in instance.block_device_mappings:
        newSnapName = thisName + "_" + snapshotTag + "_" + timestr + "_" + str(blockCount)
        thisNewSnapshot = ec2.create_snapshot(VolumeId=blockDevice.get('Ebs').get('VolumeId'),Description="Created by create_track_snaps.py from Instance: " + instance.id)
        blockCount += 1

它会关闭所有涉及的实例。

问题:

  1. 是否可以在实例运行时创建快照。我看到了对AWS CLI选项的引用--no-reboot,但我在boto3 API中没有看到任何内容来访问它。

  2. 如果在创建快照期间实例正在运行,那么期望有意义的快照是否合理?我看到很多警告,应该总是关闭实例来创建一个干净的快照。同样,这在生产环境中似乎并不合理。

  3. 感谢您的任何提示, 克里斯。

1 个答案:

答案 0 :(得分:1)

您似乎混合了两个概念:创建AMI并创建EBS快照。

创建 AMI (包括所有附加卷的快照)时,除非选择 no reboot 选项,否则将重新启动实例。

创建 EBS快照时,实例不会受到影响。

您提供的代码示例带有EBS快照。这就是 no reboot 选项不存在的原因(它仅适用于AMI)。

根据CreateSnapshot documentation

  

您可以拍摄正在使用的附加卷的快照。但是,快照仅捕获在发出快照命令时已写入EBS卷的数据;这可能会排除任何应用程序或操作系统缓存的任何数据。

将其视为从计算机中拔出电源 - 数据可能无法正确保存,但系统通常可以恢复。这对于很少(如果有的话)使用的备份来说就足够了。